【问题标题】:Get first word of string获取字符串的第一个单词
【发布时间】:2013-09-04 16:32:15
【问题描述】:

好的,这是我的代码,其中包含我尝试过的操作的详细信息:

var str = "Hello m|sss sss|mmm ss";
//Now I separate them by "|"
var str1 = str.split("|");

//Now I want to get the first word of every split-ed sting parts:

for (var i = 0; i < codelines.length; i++) {
  //What to do here to get the first word of every spilt
}

那我应该在那里做什么? :\

我想得到的是:

  • firstword[0] 将给"Hello"

  • firstword[1] 将给"sss"

  • firstword[2] 会给"mmm"

【问题讨论】:

    标签: javascript split


    【解决方案1】:

    用空格再次分割:

    var firstWords = [];
    for (var i=0;i<codelines.length;i++)
    {
      var words = codelines[i].split(" ");
      firstWords.push(words[0]);
    }
    

    或者使用String.prototype.substr()(可能更快):

    var firstWords = [];
    for (var i=0;i<codelines.length;i++)
    {
      var codeLine = codelines[i];
      var firstWord = codeLine.substr(0, codeLine.indexOf(" "));
      firstWords.push(firstWord);
    }
    

    【讨论】:

    【解决方案2】:

    这段代码应该让你第一个单词,

    var str = "Hello m|sss sss|mmm ss"
    //Now i separate them by "|"
    var str1 = str.split('|');
    
     //Now i want to get the first word of every split-ed sting parts:
    
     for (var i=0;i<str1.length;i++)
     {
         //What to do here to get the first word :(
         var words = str1[i].split(" ");
         console.log(words[0]);
     }
    

    【讨论】:

      【解决方案3】:
      var str = "Hello m|sss sss|mmm ss"
      //Now i separate them by "|"
      var str1 = str.split('|');
      
      //Now i want to get the first word of every split-ed sting parts:
      
      for (var i=0;i<str1.length;i++)
      {
          //What to do here to get the first word :)
          var firstWord = str1[i].split(' ')[0];
          alert(firstWord);
      }
      

      【讨论】:

        【解决方案4】:

        我正在使用这个:

        function getFirstWord(str) {
                let spaceIndex = str.indexOf(' ');
                return spaceIndex === -1 ? str : str.substr(0, spaceIndex);
            };
        

        【讨论】:

          【解决方案5】:

          使用 underscorejs 怎么样

          str = "There are so many places on earth that I want to go, i just dont have time. :("
          firstWord = _.first( str.split(" ") )
          

          【讨论】:

            【解决方案6】:

            使用正则表达式

            var totalWords = "foo love bar very much.";
            
            var firstWord = totalWords.replace(/ .*/,'');
            
            $('body').append(firstWord);
            &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"&gt;&lt;/script&gt;

            【讨论】:

            • 从未想过!它基本上将在第一个空格之后找到的所有内容替换为空字符串。我更喜欢这种解决方案,因为它很简单。
            • @BimalGrg,你能解释一下这个正则表达式吗?如果我只想取空格后的第一个单词和第二个字符,比如“Bimal G”?
            • @DevAS 我不知道你问题的正则表达式,但还有其他简单的方法可以做到这一点,比如 javascript split 方法。
            • 我的意思是这个/ .*/@BimalGrg
            • 意思是,在第一个空格出现后,用空格替换给定字符串的所有单词。
            【解决方案7】:

            对先前答案的改进(处理多行或选项卡式字符串):

            String.prototype.firstWord = function(){return this.replace(/\s.*/,'')}
            

            或者使用search和substr:

            String.prototype.firstWord = function(){let sp=this.search(/\s/);return sp<0?this:this.substr(0,sp)}
            

            或 没有正则表达式:

            String.prototype.firstWord = function(){
              let sps=[this.indexOf(' '),this.indexOf('\u000A'),this.indexOf('\u0009')].
               filter((e)=>e!==-1);
              return sps.length? this.substr(0,Math.min(...sps)) : this;
            }
            

            例子:

            String.prototype.firstWord = function(){return this.replace(/\s.*/,'')}
            console.log(`linebreak
            example 1`.firstWord()); // -> linebreak
            console.log('space example 2'.firstWord()); // -> singleline
            console.log('tab	example 3'.firstWord()); // -> tab

            【讨论】:

              【解决方案8】:

              在现代 JS 中,这被简化了,你可以这样写:

              const firstWords = str =>
                str .split (/\|/) .map (s => s .split (/\s+/) [0])
              
              const str = "Hello m|sss sss|mmm ss"
              
              console .log (firstWords (str))

              我们首先在| 上拆分字符串,然后在任意空白处拆分结果数组中的每个字符串,只保留第一个。

              【讨论】:

                【解决方案9】:

                我很惊讶这个方法没有被提及:"Some string".split(' ').shift()


                直接回答问题:

                let firstWords = []
                let str = "Hello m|sss sss|mmm ss";
                const codeLines = str.split("|");
                
                for (var i = 0; i < codeLines.length; i++) {
                  const first = codeLines[i].split(' ').shift()
                  firstWords.push(first)
                }
                

                【讨论】:

                  【解决方案10】:
                  const getFirstWord = string => {
                      const firstWord = [];
                      for (let i = 0; i < string.length; i += 1) {
                          if (string[i] === ' ') break;
                          firstWord.push(string[i]);
                      }
                      return firstWord.join('');
                  };
                  console.log(getFirstWord('Hello World'));
                  

                  或简化:

                  const getFirstWord = string => {
                      const words = string.split(' ');
                      return words[0];
                  };
                  console.log(getFirstWord('Hello World'));
                  

                  【讨论】:

                    【解决方案11】:

                    要获取字符串的第一个单词,您可以这样做:

                    let myStr = "Hello World"
                    let firstWord = myStr.split(" ")[0]
                    

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-11-24
                      • 1970-01-01
                      • 2011-06-25
                      • 1970-01-01
                      • 2014-06-09
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多