从字符串

时间:2018-10-01 14:37:58

标签: jquery

我有一个像这样的字符串"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);
   }

}

2 个答案:

答案 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);

您当然可以将所有喜欢的字符放入数组中:)