我正在尝试解决JavaScript编码练习,我的代码错了,我看不出原因。
任务是:
取一个字符串,如果字符串中的每个字母都被一个'+'符号包围,则返回true,否则返回false。
它适用于大多数情况,但不适用于'= a +',例如我不明白为什么。有人可以解释一下吗?
function SimpleSymbols(str) {
for (var i = 0; i < str.length; i++) {
if (str[0].match(/[a-z]/i) || str[str.length - 1].match(/[a-z]/i)) {
return false;
} else {
if (str[i].match(/[a-z]/i) && (str[i - 1] !== "+" || str[i + 1] !== "+")) {
return false;
} else {
return true;
}
}
}
}
SimpleSymbols(readline());
答案 0 :(得分:1)
问题是内部else
子句。它应该被消除,相反,该函数应该在true
块之后返回for
。
function SimpleSymbols(str) {
for (var i = 0; i < str.length; i++) {
if (str[0].match(/[a-z]/i) || str[str.length - 1].match(/[a-z]/i)) {
return false;
} else {
if (str[i].match(/[a-z]/i) && (str[i - 1] !== "+" || str[i + 1] !== "+")) {
return false;
}
}
}
return true;
}
答案 1 :(得分:0)
你可以匹配这个并返回结果:
^\+(?:[a-z]\+)*$
https://regex101.com/r/1zXUJD/1
查找以'+'开头的字符串,然后查找任意数量的[a-z] +,直到字符串结尾。