【问题标题】:Javascript: Returning the last word in a stringJavascript:返回字符串中的最后一个单词
【发布时间】:2014-01-19 22:16:08
【问题描述】:

正确的:

我有一个words 字符串,其中有两个单词,我需要返回最后一个单词。它们由“”分隔。我该怎么做?

function test(words) {

var n = words.indexOf(" ");
var res = words.substring(n+1,-1);
return res;

}

有人告诉我使用indexOfsubstring,但这不是必需的。任何人都有一个简单的方法来做到这一点? (有或没有indexOfsubstring

【问题讨论】:

  • sentence.split(" ").slice(-1)
  • lastIndexOfslice!
  • 我不明白。您已经解决了问题中的问题。您希望我们做什么?
  • @Blender 发布答案。
  • @GrijeshChauhan:这不是一个有趣的问题。

标签: javascript string substring


【解决方案1】:

最简单的方法是使用切片方法:-

例如:-

let words = "hello world";
let res = words.slice(6,13);
console.log(res);

【讨论】:

  • 我会使用 words.split 因为你不需要知道空间的位置。你给自己更多的工作。
【解决方案2】:
/**
 * Get last word from a text
 * @param {!string} text
 * @return {!string}
 */
function getLastWord(text) {
  return text
    .split(new RegExp("[" + RegExp.quote(wordDelimiters + sentenceDelimiters) + "]+"))
    .filter(x => !!x)
    .slice(-1)
    .join(" ");
}

【讨论】:

    【解决方案3】:

    从接受的答案添加,如果输入字符串是"Hello World "(注意末尾的多余空格),它将返回''。下面的代码应该可以预见到用户胖手指" "

    var lastWord= function(str) {
      if (str.trim() === ""){
        return 0;
      } else {   
        var splitStr = str.split(' ');
        splitStr = splitStr.filter(lengthFilter);
        return splitStr[splitStr.length - 1];
      }
    };
    
    var lengthFilter = function(str){
        return str.length >= 1;
    };
    

    【讨论】:

      【解决方案4】:

      你也可以:

      words.split(" ").pop();
      

      只需链接拆分函数的结果(数组)并弹出最后一个元素就可以在一行中完成:)

      【讨论】:

      • 虽然此代码可能会回答问题,但提供有关 why 和/或 如何 此代码回答问题的附加上下文可提高其长期价值.
      【解决方案5】:

      它非常简单。 你有两个用空格分隔的单词。 让我们使用 split() 方法将字符串分解为数组。 现在你的数组有两个索引为 0 和 1 的元素。 警告索引为 1 的元素。

      var str="abc def";
      var arr=str.split(" ");
      alert(arr[1]);
      

      【讨论】:

        【解决方案6】:

        要完成 Jyoti Prakash,您可以添加多个分隔符 (\s|,) 来拆分字符串(通过 this post

        例子:

        function lastWord(words) {
          var n = words.split(/[\s,]+/) ;
          return n[n.length - 1];
        }
        

        注意:正则表达式\s 表示whitespace characters:空格字符、制表符、回车符、换行符、垂直制表符、换页符

        sn-p

        var wordsA = "Hello  Worlda"; // tab
        var wordsB = "One Hello\nWorldb";
        var wordsC = "Two,Hello,Worldc";
        var wordsD = "Three Hello Worldd";
        
        function lastWord(words) {
          var n = words.split(/[\s,]+/);
          return n[n.length - 1];
        }
        
        
        $('#A').html( lastWord(wordsA) );
        $('#B').html( lastWord(wordsB) );
        $('#C').html( lastWord(wordsC) );
        $('#D').html( lastWord(wordsD) );
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        A:<span id="A"></span><br/>
        B:<span id="B"></span><br/>
        C:<span id="C"></span><br/>
        D:<span id="D"></span><br/>

        【讨论】:

          【解决方案7】:

          你想要最后一句话,这表明lastIndexOf 对你来说可能比indexOf 更有效率。此外,slice 也是 Strings 可用的方法。

          var str = 'foo bar fizz buzz';
          str.slice(
              str.lastIndexOf(' ') + 1
          ); // "buzz"
          

          参见 2011 年的 this jsperf,显示 split vs indexOf + slice vs indexOf + substring 和 @显示lastIndexOf 的987654324@ 与indexOf 的效率大致相同,主要取决于匹配发生的时间。

          【讨论】:

          • 简短、干净、不乱不乱。
          【解决方案8】:

          试试这个:

          你可以使用 n 字长的单词。

          示例:

            words = "Hello World";
            words = "One Hello World";
            words = "Two Hello World";
            words = "Three Hello World";
          

          所有将返回相同的值:“世界”

          function test(words) {
              var n = words.split(" ");
              return n[n.length - 1];
          
          }
          

          【讨论】:

          • 请注意,这不适用于结尾有空格的字符串("Hello World ").split(" "); 返回["Hello", "World", ""]。 “最后一句话”是""
          • 使用可以做到这一点words.trim().split(" ");
          【解决方案9】:

          使用split()

          function lastword(words){
           array = words.split(' ');
          
           return array[1]
          }
          

          【讨论】:

            【解决方案10】:
            var data = "Welcome to Stack Overflow";
            console.log(data.split(" ").splice(-1));
            

            输出

            [ 'Overflow' ]
            

            即使原始字符串中没有空格也可以使用,因此您可以立即获得这样的元素

            var data = "WelcometoStackOverflow";
            console.log(data.split(" ").splice(-1)[0]);
            

            输出

            WelcometoStackOverflow
            

            【讨论】:

            • 可以用pop()替换splice(-1)[0]
            • 你必须修剪()尾随空格才能制造这个炸弹
            • 很久以前.. 但是..如果您想删除单词之间的任何多余空格,请改用:data.split(/\s+/).splice(-1));
            猜你喜欢
            • 1970-01-01
            • 2018-05-14
            • 1970-01-01
            • 2020-03-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-12-27
            相关资源
            最近更新 更多