Javascript JS-逐个字符遍历文本片段,跳过某些字符

Javascript JS-逐个字符遍历文本片段,跳过某些字符,javascript,for-loop,character,Javascript,For Loop,Character,我使用JS循环给定的文本,在下面的伪文本中称为“input_a” 基于另一个文本的内容和单独的文本“input_b”我想通过给文本“input_a”分配一个布尔值来操作它们 到目前为止,我的做法如下: for (i=0; i < input_a.length; i++) { if (input_b[i] == 0){ //do something to output } } for(i=0;i

我使用JS循环给定的文本,在下面的伪文本中称为“input_a”

基于另一个文本的内容和单独的文本“input_b”我想通过给文本“input_a”分配一个布尔值来操作它们

到目前为止,我的做法如下:

for (i=0; i < input_a.length; i++) {
    if (input_b[i] == 0){
      //do something to output
    }
}
for(i=0;i
现在的问题是上面的循环,因为它使用.length还包括所有空白/特殊字符,而我只想包括A-Z-匹配所有特殊字符(在这种情况下,这不适用于接收分配给它们的布尔值)

我怎样才能高效、优雅地实现这一点呢?但愿没有重新发明轮子或创建自己的字母表阵列


编辑1:忘记提到当被操纵的输入\u a最终作为输出交付时,需要保留特殊字符的位置。这使得从输入_中删除所有特殊字符成为不可行的选择

听起来您希望
input\u a
只保留字母字符-您可以使用正则表达式轻松地对其进行转换。匹配所有非字母字符,并将其替换为空字符串:

const input_a='foo_%%bar*&#baz';
const sanitizedInputA=输入替换(/[^a-z]+//gi,”);
console.log(sanitizedputa);
//通过根据采购订单的编辑1编辑的sanitizedInputA
进行迭代

如果要在不使用正则表达式的情况下执行此操作,可以使用此函数:

function isSpecial(char) {
    if(char.toLowerCase() != char.toUpperCase() || char.toLowerCase.trim() === ''){
        return true;
    }
    return false;
}

然后,当每个字符进入循环时,您可以为其调用此函数。

您可以检查当前位置的字符是否为字母,例如:

for (i=0; i < input_a.length; i++) {
    if(/[a-z]/i.test(input_a[i])){
        if (input_b[i] == 0){
           //do something to output
        }
    }
}
for(i=0;i

/[a-z]/i
正则表达式匹配大小写字母。

这会弄乱索引,他在示例中使用了
input_b[i]
。另请参见上面对原始问题的编辑,在最后的输出中需要保留非a-z字符。(例如,仅在“布尔”赋值中跳过)。