2

文字列の特定の文字の前後にスペースを追加したい。

var x = "asdasdasdasd+adasdasdasd/asdasdasdasd*asdasdasd-asdasdasd:asdasdasdadasdasd?";

前後にスペースを入れたい

var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];

したがって、出力は次のようになります

asdasdasdasd + adasdasdasd / asdasdasdasd * asdasdasd - as ( dasd ) asd : asdasdasdadasdasd ?
4

4 に答える 4

3

次のようなものを使用できます。

var str = x.replace(new RegExp('\\' + separators.join('|\\'), 'g'), ' $& ')
于 2013-10-11T08:48:48.893 に答える
3

そのために正規表現を使用できます。

for (var i = 0; i < separators.length; i++) { 
      var rg = new RegExp("\\" + separators[i], "g"); 
      x = x.replace(rg, " " + separators[i] + " "); 
}
于 2013-10-11T08:49:56.403 に答える
1

あなたはこれを試すことができます | デモ

function fix(val)
{
  var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];
  var result="";
  flag=true;
  for(var i=0;i<val.length;i++)
  {
     flag=true;
     for(var j=0;j<separators.length;j++)
     {
        if(val[i]==separators[j])
        {
            result += " " + val[i] + " ";
            flag=false;         
        }
     }
     if(flag)
     {
            result +=val[i];
     }
}

alert(result);
}
于 2013-10-11T08:55:51.983 に答える
0

うーん、これはかなり簡単に見えます...

var separators = ['+', '-', '(', ')', '*', '/', ':', '?'];
var x = "asdasdasdasd+adasdasdasd/asdasdasdasd*asdasdasd-asdasdasd:asdasdasdadasdasd?";
$(separators).each(function (index, element) {
    x = x.replace(element, " " + element + " ");
});

ここにフィドルがあります:http://jsfiddle.net/gPza4/

このコードを理解したい人のために、私が基本的に行うことは、区切り文字配列を jQuery オブジェクトに作成し、文字列 x 内のこれらの区切り文字の出現箇所を「間隔を空けた」形式に置き換えながら反復処理することです。

于 2013-10-11T08:55:31.840 に答える