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

Replacing only certain spaces in javascript with non spaces

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

这是我的 fiddle http://jsfiddle.net/qjpgaz5h/ 的 link 我遇到的问题是我想删除二进制块之间的 spaces 但不是在非二进制之间,但由于某种原因替换字符不起作用,我不知道为什么,如果我将 space 替换为非 space 以外的字面意思,它工作正常。

我想要的是删除 spaces 以便转

Non Binary Text 01110100 01100101 01110011 01110100 non binary text.

Non Binary Text 01110100011001010111001101110100 non binary text.

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

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

这将匹配由 8 位块包围的多个空格 \s+。我们将 block-spaces-(?=block) 替换为 block(</code>) 其中 <code> 表示第一个 group(空格之间的第一件事)。第二组 ((?[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, "");

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

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

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

此正则表达式查找后面带有 space 的二进制数字字符串,并在没有 space 的情况下替换它。