[英]Find the longest word in a string?
我正在尝试编写一个基本的javascript函数以查找字符串中最长的单词并记录其长度。
到目前为止,我有:
function findLongestWord(str) {
var words = [];
var longest = [];
words.push(str.split(" "));
for(var i = 0; i < words.length; i++){
if (words[i].length > longest[0].length){
longest.push(words[i]);
}
}
return longest[0].length;
}
findLongestWord('The quick brown fox jumped over the lazy dog');
这对我来说很有意义,但是却给我一个错误。 我尝试了console.logging的每个步骤,但在for循环中均失败了。
当您使用words.push(str.split(" "))
,数组words
看起来像
[
["The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog"]
]
另一个问题是,当您检查longest[0].length
在第一次迭代for
,它是undefined
。 导致错误
未捕获的TypeError:无法读取未定义的属性“ length”
为了解决这个问题,您可以使用longest
string
而不是array
。 在for
,为其分配length
大于当前longest
字符串的字符串。
在函数末尾,您可以返回longest
字符串。
问题/建议:
str.split(' ')
直接分配给words
变量 longest
string
变量而不是array
, initialize
其initialize
为空字符串,即''
,以避免上述错误 longest
的长度和words
数组中的字符串 words
数组中字符串的长度大于longest
字符串,请更新longest
字符串。 \\s+
以空格split
字符串 function findLongestWord(str) { var words = str.split(/\\s+/); var longest = ''; for (var i = 0; i < words.length; i++) { if (words[i].length > longest.length) { longest = words[i]; } } return longest; } var longestWord = findLongestWord('The quick brown fox jumped over the lazy dog'); document.write('Longest Word: "' + longestWord + '"'); document.write('<br />Longest Word Length: ' + longestWord.length);
您可以使用Array.prototype.sort
和Array.prototype.shift
大大简化此过程。 例如
var str = 'The quick brown fox jumped over the lazy dog', longest = str.split(' ').sort(function(a, b) { return b.length - a.length; }).shift(); document.getElementById('word').innerHTML = longest; document.getElementById('length').innerHTML = longest.length;
<p id="word"></p> <p id="length"></p>
sort()
将产生一个按长度(从最长到最短 )排序的字符串数组,而shift()
将获取第一个元素。 您还可以使用return a.length - b.length
和pop()
而不是shift()
来获取最后一个元素,以另一种方式(从最短到最长 )排序。
尝试
function longestWord(string) {
var str = string.split(" ");
var longest = 0;
var word = null;
for (var i = 0; i < str.length; i++) {
if (longest < str[i].length) {
longest = str[i].length;
word = str[i];
}
}
return word;
}
function findLongestWord(str) {
var arr=str.split(" ");
var sarr=arr.sort(function(a,b){return b.length-a.length;});
str=sarr[0];
return str.length;
}
使用javascript Array.prototype.sort()
我们可以优雅地解决此问题,而无需使用循环
if (words[i].length > longest[0].length)
您将在上面的行中得到错误。 与第一次一样,它是空的。
您的声明
words.push(str.split(" "));
应该
words=str.split(" ")
@Tushar也解决了您的其余“问题” ... ;-)
这是另一个较短的版本:
function findTheLongestWord(str) { var temp = ''; (str || "").split(/\\s+/).forEach(function(word) { temp = word.length > temp.length && word || temp; }); return "longest word is: " + temp + " and it's length is: " + temp.length; } alert (findTheLongestWord("The quick brown fox jumped over the lazy dog, once again!"));
要在Java中找到最长的关键字字符串,您需要编写一个程序。
public class FindLarge {
private String longestWord;
public String longestWord(String sen) {
String arr[] = sen.split(" "); // seperates each word in the string and stores it in array
longestWord = arr[0]; // Assume first word to be the largest word
for (String a : arr)
if (longestWord.length() < a.length()) // check length of each word
longestWord = a;
return longestWord;
}
public static void main(String[] args) {
FindLarge fl=new FindLarge();
String longestWord=fl.longestWord("Hello Welcome to Java"); // string to be checked
System.out.println("Longest Word: "+ longestWord); // Final Output
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.