我正在处理最后一个句子中的逻辑。单词可以通过空格或“-”字符分隔。
有没有更容易的方法获取它?
编辑
我可以从句子末尾向后遍历来完成,但我想找到更好的方法。
我正在处理最后一个句子中的逻辑。单词可以通过空格或“-”字符分隔。
有没有更容易的方法获取它?
编辑
我可以从句子末尾向后遍历来完成,但我想找到更好的方法。
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所指出的,修剪任何尾随的空格或连字符是值得的。确保参数是一个字符串也是个好主意。
使用正则表达式:
/.*[\s-](\S+)/.exec(str)[1];
同时忽略末尾的空格
index[0]
是匹配到的整个字符串,[1]
是第一组括号中的内容(即 (\S+)
中的内容)。 - user578895<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>
好的,使用 Split 函数
string lastWord = input.Split(' ').Last();
或者
string[] parts = input.Split(' ');
string lastWord = parts[parts.Length - 1];
虽然这对于这个字符串可能有效,但对于稍微不同的字符串可能无效,因此您要么必须找出如何相应地更改代码,要么发布所有规则。
字符串输入 =“....,API”;
在这里,逗号将成为“单词”的一部分。
此外,如果获取单词的第一种方法是正确的,即最后一个空格后面的所有内容,并且您的字符串遵循以下规则:
Will always contain at least one space
Does not end with one or more space (in case of this you can trim it)
那么你可以使用这段代码,它将分配较少的对象到堆上,以便稍后进行垃圾回收:
string lastWord = input.Substring(input.LastIndexOf(' ') + 1);
希望它有所帮助
var str = "hi anand" alert(str.replace(/[\s-]+$/,'').split(/[\s-]/).pop());
- Anand Thangappan
split()
和pop()
中使用正则表达式/^\s+|\s+$/g
可以使字符串去除首尾空格,这样做很棒! - alex