有没有办法找出 Javascript 中最长的单词?它也应该忽略标点符号!
我理解逻辑,但代码......叹息
这就是我们所做的 -
计算在一起的字母数字字符的数量,而不是用空格或任何符号分隔。
得到他们的长度。
- 找到最大的长度。
- 返回长度最大的单词。
希望我说清楚...
有没有办法找出 Javascript 中最长的单词?它也应该忽略标点符号!
我理解逻辑,但代码......叹息
这就是我们所做的 -
计算在一起的字母数字字符的数量,而不是用空格或任何符号分隔。
得到他们的长度。
希望我说清楚...
拆分字符串,遍历各个部分并跟踪最长的部分。
像这样的东西:
var parts = sentence.split();
var longestIndex = -1;
var longestWord = 0;
for(var i=0; i < parts.length; i++){
if(parts[i].length > longestWord){
longestWord = parts[i].length;
longestIndex = i;
}
}
alert("longest word is " + parts[longestIndex] + ": " + longestWord + " characters");
如果您需要拆分非字母字符以及空格,则需要使用正则表达式。您可以更改此行:
var parts = sentence.split();
为此(感谢 Kooilnc 的正则表达式):
var parts = sentence.match(/\w[a-z]{0,}/gi);
var longest_word = arr.reduce(function (x, y) { return x.length > y.length ? x : y; });
你去吧。
使用它:
var arr = [ 'lol', 'loll', 'lollll', 'lo', 'l' ];
var longest_word = arr.reduce(function (x, y) { return x.length > y.length ? x : y; });
所以把你的句子变成一个数组,那么变量longest_word将是该数组中最长的单词。
尝试这个:
sentence_array = sentence.split(' ');
var longest = sentence_array.sort(function (a, b) { return b.length - a.length; })[0];
您可以使用该方法将字符串拆分为仅由单词组成的数组(无分隔符、数字等)match
,然后按每个元素的长度降序排序,之后元素 0 是最长的单词。
它可能是一个String.prototype
扩展
String.prototype.longestWord = function(){
return (this.match(/\w[a-z]{0,}/gi) || [''])
.sort(function(a,b){return b.length-a.length;})[0];
}
//usage
'We saw it ...! A lazy cat walking - or did we?'.longestWord(); //=> walking
'------------'.longestWord(); //=> ''
'---aa--b----'.longestWord(); //=> 'aa'
与函数相同,使用Array.reduce
function longestWord(str){
return (str.match(/\w[a-z]{0,}/gi) || [''])
.reduce( function(a,b){return a.length>b.length ? a : b;} );
}
这就是我试图解决问题的方式:
function LongestWord(sen) {
var wordArray = sen.match(/\w+/gi);
var longest = 0;
var word = undefined;
for(var i = 0; i < wordArray.length; i++){
if(wordArray[i].length > longest){
word = wordArray[i];
longest = word.length;
}
}
return word;
}