我有一个像这样的字符串"aadsa&ss))as(d?"
,我想从中获取所有特殊字符的索引。我已经尝试遵循并获取值,但是我敢肯定会有更好的方法。
var str = "aadsa&ss))as(d?";
var indexes = [];
for (var i = 0; i < str.length; i++) {
if (str[i] === "&" || str[i] === "*" || str[i] === "(" || str[i] === ")" || str[i] === ">" || str[i] === "<" || str[i] === "?") {
indexes.push(i);
}
}
答案 0 :(得分:1)
可以通过RegExp
实现。
首先,我用'i'
替换了所有空格(如果有的话),因为它不是特殊字符,然后我使用/\W/
来搜索所有特殊字符 String.search()
。
然后,在while循环中,当我搜索特殊字符时,我使用String.replace()
用'i'
再次替换了这些特殊字符,因此再次找不到它们。
var str = "aadsa&ss))as(d?";
var cpy = str;
var indexes = [];
cpy = cpy.replace(/\s+/g, 'i');
while(/\W/.test(cpy)) {
indexes.push( cpy.search(/\W/) );
cpy = cpy.replace(/\W/, 'i');
}
console.log(indexes);
答案 1 :(得分:1)
如前所示,您可能应该通过正则表达式进行操作,但是这里仍然是您问题的答案:
let str = "aadsa&ss))as(d?";
let specialChars = ["(", ")", "&", "?"];
let indexes = [];
for(let i = 0; i < str.length; i++) {
if(specialChars.indexOf(str[i]) != -1) indexes.push(i);
}
console.log(indexes);
您当然可以将所有喜欢的字符放入数组中:)