我正在为句子上的最后一个字做一些逻辑。单词由空格或“ - ”字符分隔。
最简单的方法是什么?
修改
我可以通过从句子末尾向后移动来做到这一点,但我想找到更好的方法
答案 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)
您是否尝试过lastIndexOf函数http://www.w3schools.com/jsref/jsref_lastIndexOf.asp
答案 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);
我希望得到它的帮助