我目前正在java脚本中使用websocket,并希望对从websocket的另一端收到的消息进行一些字符串操作。除了信息中的第一个单词外,我想去掉所有字符。例如,如果我得到消息lets go to the party
,我想将字符串操作为lets
。我想我会遍历字符串索引,直到我找到第一个空白。但我不确定javascript中的语法。这听起来正确吗?或者有更好的方法吗?很抱歉,如果这是琐碎的话,我对JavaScript还很陌生。
简单:
var theMessage = 'Hello world!';
var theFirstWord = theMessage.split(' ')[0]; // 'Hello'
一种更保守的方法,不需要创建字符串数组,也不需要总是遍历整个字符串。
function getNthWord(input,wordNumber){
if(!input || !input.length)
throw new Exception("No input");
if(!wordNumber || wordNumber <0)
throw new Exception ("Word number missing");
var wordStart=0;
for(var i=0;i<input.length;i++){
var c = input[i];
if(c==' '){
wordNumber--;
if(wordNumber==0)
return input.substring(wordStart,i);
else
wordStart=i+1;
}
}
return input.substring(wordStart,input.length);
}
http://jsfiddle.net/vtortola/7bf2mfag/
我想说它在O(n)
时间和O(1)
空间中运行,尽管如果wordNumber
参数很小,它可能接近O(1)
时间?
另一方面,使用分割总是O(n)
的时间和空间。