我正在尝试为大量字符设置if
条件。
我可以使用
if (str==!||str==@||str==#||str==$||str==^||str==&)
依此类推,但这似乎效率很低。如果这些字符位于以下字符上,我想获得条件才能工作:
!@#%$^&()_-+=\?/.,'][{}<>`~
有没有更短,更有效的方法?
for (var c0 = 1; c0 > fn.length++; c0++) {
var str = fn.charAt(c0--);
if (str ==-"!@#%$^&()_-+=\?/.,'][{}<>`~") {
}
}
我希望上面的字符串中的每个字符都包含支票。
答案 0 :(得分:2)
您可以使用正则表达式character class来检查您的字符是否与特定字符匹配:
/^[\!@#%$\^&\(\)_\-\+=\?\/\.,'\]\[\{\}\<\>`~]$/
在这里,我转义了特殊字符,以使它们像普通字符一样被对待。
请参见下面的工作示例:
const regex = /^[\!@#%$\^&\(\)_\-\+=\?\/\.,'\]\[\{\}\<\>`~]$/,
charA = '@', // appears in char set
charB = 'A'; // doesn't appear in char set
console.log(regex.test(charA)); // true
console.log(regex.test(charB)); // false
或者,如果您不想使用正则表达式,则可以将所有字符放入数组中,并使用.includes
检查字符是否在数组中。
const chars = "!@#%$^&()_-+=\?/.,'][{}<>`~",
charArr = [...chars],
charA = '@', // is in char set
charB = 'A'; // isn't in char set
console.log(charArr.includes(charA)); // true
console.log(charArr.includes(charB)); // false
答案 1 :(得分:1)
仅使用正则表达式而不是手动的单字符检查。
const pattern = new RegExp("!@#%$^&()_-+=\?\/.,'][{}<>`~");
const exists = pattern.test(str);
if (exists) {
// code logic for special character exists in string
}
答案 2 :(得分:0)
首先,您可以使用split('')
将字符串拆分为字符数组。接下来,您可以使用.some
检查数组中至少一个元素的条件是否为真:
"!@#%$^&()_-+=\?/.,'][{}<>`~".split('').some(x => x === str)