Javascript 不使用拆分方法查找字符串中最长的单词
我的老师让我们尝试构建一个函数,在不使用str.split()方法的情况下查找字符串中单词的最长长度。函数应将字符串作为参数,并输出最长单词的长度 到目前为止,我已经尝试使用.push方法创建一个函数,将字符串放入数组,然后尝试将该数组分解为每个单词,找到每个子数组中每个单词的长度,然后进行比较。因为我不够聪明或经验不足,所以我的一位朋友让我尝试: > 只需使用两个“跟踪”变量。一个用于跟踪当前单词,另一个用于跟踪到目前为止看到的最长单词。我将让您考虑这些变量的初始值。接下来,只需迭代str的每个字符(字符串与数组一样可写)即可“构建”一个单词。当你遇到空格字符或str结尾时,你知道你有一个完整的单词。你将这个单词的长度与当前最长的单词(你的另一个跟踪变量)进行比较并将两者中的较大值指定给最长单词跟踪变量。在迭代的最后,最长单词跟踪变量将包含可返回的最长单词长度。注意:在检查单词变量的长度后,需要重置该变量,因此它不会继续“构建”通过迭代的其余部分。” > 我真的不知道他是什么意思,也不知道该怎么办 到目前为止,我有:Javascript 不使用拆分方法查找字符串中最长的单词,javascript,arrays,string,Javascript,Arrays,String,我的老师让我们尝试构建一个函数,在不使用str.split()方法的情况下查找字符串中单词的最长长度。函数应将字符串作为参数,并输出最长单词的长度 到目前为止,我已经尝试使用.push方法创建一个函数,将字符串放入数组,然后尝试将该数组分解为每个单词,找到每个子数组中每个单词的长度,然后进行比较。因为我不够聪明或经验不足,所以我的一位朋友让我尝试: > 只需使用两个“跟踪”变量。一个用于跟踪当前单词,另一个用于跟踪到目前为止看到的最长单词。我将让您考虑这些变量的初始值。接下来,只需迭代str的每
function findLongestWordLength(str) {
let words = []
words.push(str);
console.log(words)
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
我该怎么办?我已将字符串推送到数组中,但现在我的朋友给了我一个提示,我不知道该怎么做。,添加到当前单词中。如果找到空格,请检查当前单词是否比前一个最长单词长。如果是,就储存起来。如果不是,就什么都不要做
清除当前单词并继续在字符串中移动
函数findLongestWordLength(str){
让longestWord=“”;
让当前单词=”;
//逐字移动字符串
for(设i=0;ilongestWord.length)longestWord=currentWord;//检查该单词是否最长
currentWord=”“;//重置当前单词
}否则{
currentWord+=str.charAt(i);//不在空格字符处,仍在生成当前单词
}
}
如果(currentWord>longestWord)longestWord=currentWord;//字符串结束-再次检查当前单词
返回最长的单词;
}
const longest=findLongestWordLength(“敏捷的棕色狐狸跳过了懒狗”);
console.log(最长)代码>可能一种更短更快的方法是使用这样一个简单的正则表达式
函数findLongestWordLength(str){
var longestWord=“”;
str.replace(/\S+/g,函数(匹配){
if(match.length>longestWord.length)
最长的单词=匹配;
}
);
返回最长单词;//.length;
}
log(findLongestWordLength(“敏捷的棕色狐狸跳过了懒狗”)
您可以使用循环遍历字符串并检查字符是否为空格。也许for…of循环更合适,因为索引不重要,所以这不适用于findLongestWordLength(“abcedfg”)
@jro您说得对,谢谢。我已经更新了答案来解决这个问题。我也同意你的第一点,但鉴于OP仍在学习,我个人认为基本的for
循环是最合适的。@Quantsol我相信我已经做到了。。。有什么我没有评论过的东西你不确定吗?