我用这个作为coderbyte练习的解决方案(最长的单词)我或多或少地阅读每一行,直到我完全理解它然后复制它我仍然不完全确定它是如何工作的。该代码应该找到句子中最长的单词。
function LongestWord(sen) {
//this splits the string(sentence) into an array of words
var sentence = sen.split(" ");
var word = "";
var len = 0;
// code goes here
//this loops through the words split() from the sentence
for(var i = 0; i < sentence.length; i++) {
/*this part I don't fully understand if I'm right it replaces any letter a-z
regardless of case to "" */
var strip = sentence[i].replace(/[^a-zA-Z]/g, "");
if (strip.length > len) {
word = strip;
len = strip.length;
}
}
return word;
}
主要是我不理解的var strip部分。当我在句子[i]上调用替换方法时会发生什么?这是什么原因?
答案 0 :(得分:2)
此行var strip = sentence[i].replace(/[^a-zA-Z]/g, "");
将删除所有不是字母的字符。
[a-zA-Z]
是一个包含所有字母的字符类
[^a-zA-Z]
是对先前字符类的否定
g
如果进行全球研究(即字符串中的任何地方)
答案 1 :(得分:0)
/[^a-zA-Z]/
如果在行的开头有一个到z(小)A到Z(大写)找到删除那些字符