用非空格替换javascript中的某些空格

时间:2017-01-30 01:42:13

标签: javascript substr charat

String.prototype.replaceAt = function(index, character) {
    console.log("replacing " + character + " at " + index);
  return this.substr(0, index) + character +     this.substr(index+character.length);
}
var reg = new RegExp("[01]{8,}");
var inner = "Non Binary Text 01110100 01100101 01110011 01110100 non binary text.";
    inner = inner.replace(" ", "");
    for(var iii = 0; iii < 5; iii++){
    var pos =  inner.search(reg);
    for (var i=pos; i < inner.length; i++) {
        if(inner.charAt(i) == "1" || inner.charAt(i) == "0") continue;
        else if(inner.charAt(i) == " "){

                inner = inner.replaceAt(i, "");
        }
        else{
            break;
        }
    }}

    inner = inner.replace(/[01]{8}/g, function(v) { 
return String.fromCharCode( parseInt(v,2) ); 

});
//alert(inner);
console.log(inner);

这里是我的小提琴的链接http://jsfiddle.net/qjpgaz5h/问题我想要删除二进制块之间的空格但不是非二进制之间的空格但是无论如何替换角色不起作用,我无法弄清楚为什么,如果我用除了非空间之外的其他任何东西替换空间它可以正常工作。

我想要的是移除空格以便转向

  

非二进制文本01110100 01100101 01110011 01110100非二进制文本。

  

非二进制文本01110100011001010111001101110100非二进制文本。

2 个答案:

答案 0 :(得分:0)

试试这个/([01]{8})\s+([01]{8})/g,如:

inner = inner.replace(/([01]{8})\s+(?=[01]{8})/g, "$1");

这将匹配由8位块包围的多个空格\s+。我们将block - spaces - (?= block)替换为block$1),其中$1表示第一个(空格之间的第一件事)。第二组((?[01]{8}))是一个前瞻组,但未包含在比赛中。

示例:

var inner = "Non Binary Text 01110100 01100101 01110011 01110100 non binary text.";

console.log("Before: '" + inner + "'");

inner = inner.replace(/([01]{8})\s+(?=[01]{8})/g, "$1");

console.log("After: '" + inner + "'");

答案 1 :(得分:0)

您可以使用以下正则表达式替换二进制数字之间的空格

("Non Binary Text 01110100 01100101 01110011 01110100 non binary text.").replace(/([01]+)\s(\d)/g,"$1$2")

此正则表达式在此之后找到带有空格的二进制数字字符串,并将其替换为空格。