仅用非空格替换 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 的情况下替换它。
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 的情况下替换它。