在JavaScript中搜索最后一个单词

时间:2011-04-15 07:40:51

标签: javascript string

我正在为句子上的最后一个字做一些逻辑。单词由空格或“ - ”字符分隔。

最简单的方法是什么?

修改

我可以通过从句子末尾向后移动来做到这一点,但我想找到更好的方法

6 个答案:

答案 0 :(得分:16)

尝试拆分匹配空格或连字符并使用最后一个元素的正则表达式:

var lastWord = function(o) {
  return (""+o).replace(/[\s-]+$/,'').split(/[\s-]/).pop();
};
lastWord('This is a test.'); // => 'test.'
lastWord('Here is something to-do.'); // => 'do.'

正如@alex指出的那样,值得修剪任何尾随空格或连字符。确保参数是一个字符串也是一个好主意。

答案 1 :(得分:6)

使用正则表达式:

/.*[\s-](\S+)/.exec(str)[1];

也忽略了最后的空白

答案 2 :(得分:0)

答案 3 :(得分:0)

Here是一个类似的讨论看看

答案 4 :(得分:0)

你可以试试这样的......

<script type="text/javascript">
var txt = "This is the sample sentence";
spl = txt.split(" ");
for(i = 0; i < spl.length; i++){
    document.write("<br /> Element " + i + " = " + spl[i]); 
}
</script>

答案 5 :(得分:0)

好吧,使用拆分功能

  string lastWord = input.Split(' ').Last();

string[] parts = input.Split(' ');
string lastWord = parts[parts.Length - 1];

虽然这适用于此字符串,但它可能不适用于略有不同的字符串,因此您要么必须弄清楚如何相应地更改代码,要么发布所有规则。

string input =“....,API”;

这里,逗号将成为“单词”的一部分。

另外,如果获得单词的第一种方法是正确的,即。最后一个空格后的所有内容,您的字符串符合以下规则:

Will always contain at least one space
Does not end with one or more space (in case of this you can trim it)

然后您可以使用此代码在堆上分配更少的对象,以便GC稍后担心:

string lastWord = input.Substring(input.LastIndexOf(' ') + 1);

我希望得到它的帮助