我正在处理任务,搜索任何给定字符串中最长的单词。我认为这样做的理想方法是将字符串拆分为由每个单词组成的数组,然后循环遍历该数组并比较每个长度以返回最长的字符串。我坚持只是将字符串分成一个单词数组。我所看到的问题在主题中回答相似,似乎对复杂的方法使用了很多这么简单的任务。我正在寻找初学者级别的帮助,因为这是我第一次将正则表达式合并到我的代码中。
function findLongestWord(str) {
str = str.toLowerCase().split("/\w+");
return str;
}
findLongestWord('The quick brown fox jumped over the lazy dog');
答案 0 :(得分:1)
你的正则表达式结构很差。即使修复了.split(/\w+/)
,拆分单词也会创建一个数组,其结果与您正在寻找的相反。
您应该使用.match
收集字词。
function findLongestWord(str) {
var match = '';
str.match(/\w+/gi).forEach(function (w) {
if (w.length > match.length) {
match = w;
}
});
return match;
}
var a = findLongestWord('The quick brown fox jumped over the lazy dog');
console.log(a);
仍然有点天真,因为单词中间可以有连字符,前面,中间和结尾都有撇号。
答案 1 :(得分:1)
Ledger