2017-01-30 16 views
0
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); 

とJavaScriptでのみ、特定のスペースを交換すると、ここに私がいるhttp://jsfiddle.net/qjpgaz5h/問題は、私はバイナリのブロック間ではなく、非バイナリの間が、何らかの理由のためにスペースを削除したいよである私のバイオリンへのリンクです文字を置き換えることができないと私は理由を理解することはできません、文字通りスペース以外の何かとスペースを置き換える場合は正常に動作します。私が望んでは非空白

非バイナリテキスト01110100 01100101 01110011 01110100非バイナリテキストをオンにするので、スペースを削除することでした。

非バイナリテキスト01110100011001010111001101110100非バイナリテキスト

へ。

+0

各8ビット間のスペースを削除しますか? –

+1

実際に何をしたいか説明してください。 –

+1

期待された結果を表示すると助けになる – charlietfl

答えて

0

ように、この/([01]{8})\s+([01]{8})/gを試し:これは8ビットのブロックに囲まれた空間\s+の数と一致します

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

$1が最初グループ(空間の間の最初のもの)を意味block$1)と(= block?) - spaces - 私たちはblockを交換してください。 2番目のグループ((?[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 + "'");

+0

あなたとRamadurgaraoがお役に立ててくれてありがとう – user3930869

0
バイナリ数字の間にスペースを置き換えるために、以下の正規表現を使用することができます

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

この正規表現は、後にスペースで二進数字の文字列を検索しますスペースなしでそれを置き換えます。

関連する問題