我目前正试图弄清楚如何解决上述问题。 具体来说,我想检查字符串不是否包含大写和小写字母“stream”一词。
到目前为止,这是我的代码:
if (((gewaesser_name1.includes("Stream") == "false") ||
(gewaesser_name1.includes("stream") == "false")) &&
((gewaesser_name2.includes("Stream") == "false") ||
(gewaesser_name2.includes("stream") == "false")))
{var a= "..."}
代码确实不起作用,因为结果不是我期望的结果。
在使用以下语法变体之前,我还尝试使用indexOf
方法:
gewaesser_name2.indexOf("stream") == -1
gewaesser_name2.indexOf("stream") < 0
这些变化似乎都不适合我。有人可以给我一个暗示这里有什么问题吗?我之前多次使用indexOf
方法,但总是在我想检查一个字符串是否包含特定单词时,而不是反过来。
答案 0 :(得分:7)
我建议使用String+toLowerCase
并查看String#indexOf
,因为它适用于所有浏览器。
if (gewaesser_name1.toLowerCase().indexOf("stream") === -1 && gewaesser_name2.toLowerCase().indexOf("stream") === -1) {
var a = "..."
}
答案 1 :(得分:3)
答案 2 :(得分:1)
感谢快速反馈人员,代码现在运行得非常好!
我使用以下代码:
`if (gewaesser_name1.toLowerCase().indexOf("stream") === -1 && gewaesser_name2.toLowerCase().indexOf("stream") === -1)
{var a = "does NOT contain stream"}
else {var a= "does contain stream"}
`
答案 3 :(得分:0)
这是你可以在正则表达式中执行的操作:
const testString1 = "I might contain the word StReAm and it might be capitalized any way.";
const testString2 = "I might contain the word steam and it might be capitalized any way.";
const re = /stream/i
console.log( !!(testString1.match(re) ));
console.log( !!(testString2.match(re) ))
&#13;
答案 4 :(得分:0)
您可能希望将include()的返回结果与严格相等的操作数进行比较,=== false或=== true,这是更好的练习,但不是真的需要,只是看起来你可能会从中受益将boolean与字符串进行比较的不同之处是奇怪的事情。我也不会检查“Stream”和“stream”尝试使用toLowerCase()而不是这样,var str1_check = gewaesser_name1.toLowerCase();
我使用小写的“stream”检查流,因为你的新字符串都是小写的,你也希望它们与你的初始变量分开,因为你可能不希望这些名字被强制为小写。我使用str1_check.includes(“stream”)来检查这个字符串中是否包含字符串“stream”,因为这个结果是真实的或者是假的,你可以像这样执行检查。
if(str1_check.includes("stream")) {
//this string contained stream
}
如果第一个名称不包含“stream”,或者名称1和2不包含流,但是您的检查名称1包含小写“stream”,名称2包含大写“stream”,我看起来像你的if逻辑。看起来你只想要两个名字都不包含流,这样可以更容易地执行。
var str1_check = gewaesser_name1.toLowerCase(),
str2_check = gewaesser_name2.toLowrCase();//this way you're not making multiple toLowerCase calls in your conditional and maintain the state of your two names.
if(!str1_check.includes("stream") && !str2_check.includes("stream")){
//your code on truthey statement
}
答案 5 :(得分:0)
我更喜欢使用这样的javascript RegExp:
function includesMatch(lookupValue, testString){
var re = new RegExp(lookupValue, 'i'); //Here the 'i' means that we are doing a case insensitive match
return testString.match(re) !== null
}
var lookup = "stream";
var test1 = "do I have a StrEAm in me?";
var test2 = "well at least I don't";
console.log(includesMatch(lookup, test1));
console.log(includesMatch(lookup, test2));