2011-08-22 7 views
1

文字列の他のすべてのカンマをセミコロンに置き換えたいと思います。例えばregexとjavascriptを使用して区切られた文字列の各フィールド区切り文字(たとえばカンマをセミコロンに置き換える)を置き換えるにはどうすればよいですか?

1,2,3,4,5,6,7,8,9,10 

これを行うには、正規表現がどうなるか

1;2,3;4,5;6,7;8,9;10 

になるのでしょうか?説明は素晴らしいでしょう。

ありがとうございました:)

+0

あなたの例では、すべてのカンマを置き換えます。しかし、いくつかのカンマを置き換えてはならないという疑問を示唆しているようです。 – Dunes

+0

@Dunesは –

+0

あなたの質問は非常に不明です。あなたは、最初のペア(2つ)のカンマを置き換えたいが、最初のカンマ(1つ)を言及したいと言います。あなたの例では、すべてのカンマがセミコロンに置き換えられて表示されます。私はあなたの質問から曖昧さを取り除くための適切な結果と同様に、初期データを反映するためにあなたの例を更新することをお勧めします。 –

答えて

0

あなたはこのような何かをするだろう:それはそれをやる

myString.replace(/,/g, ';'); 
+0

回答ありがとうございますが、すべてのカンマをセミコロンで置き換えることになりましたが、私はカンマを置き換えることを考えていました。コンマを残して、コンマを置き換えてください..etc – Steve

+0

私は気づいていない、同じ答えを持っていた... :) – bozdoz

+0

私はどちらかの通知をしなかった... = D – Tejs

2
var myNums = "1,2,3,4,5,6,7,8,9,10"; 
myNums.replace(/(.*?),(.*?,)?/g,"$1;$2"); 

+0

うわー、stackoverflowの人々は本当に迅速に応答しています!どうもありがとう!これは治療法ですが、どのように機能しますか? – Steve

+0

@Steve基本的には、正規表現の一部を '()'グルーピングに入れるたびに、後で参照できる[バックトレース](http://www.regular-expressions.info/brackets.html)を作成します$ 1から$ 9(私は思う?)。したがって、正規表現は基本的に "0文字以上の文字の後にカンマが続き、0文字以上の文字の後にカンマが続きます。最後の '0以上のカンマ'はオプションです。 '0以上'最後に、グローバルに検索してください」と述べています(「http://www.regular-expressions.info/repeat.html」)。次に、2番目のカンマを含まないグループを自分自身とaに置き換えます。 –

1
var str = '1,2,3,4,5,6,7,8,9,10'; 
str.replace(/,(.*?,)?/g, ';$1'); 

// Now str === "1;2,3;4,5;6,7;8,9;10" 
0

あなたはこの正規表現パターン

([^,]*),([^,]*),? 

を使用し、$1;$2,で置き換えることができます。最後の疑問符は、最後のペアの終わりを知らせるカンマの不足を説明することです。例えば

...

var theString = "1,2,3,4,5,6,7,8,9,10"; 
theString = theString.replace(/([^,]*),([^,]*),?/ig, "$1;$2,"); //returns "1;2,3;4,5;6,7;8,9;10," 
theString = theString.substring(0, theString.length - 1); //returns "1;2,3;4,5;6,7;8,9;10" 
0

非正規表現の答え:

function alternateDelims(array, delim_one, delim_two) { 
    var delim = delim_one, 
     len = array.length, 
     result = []; 

    for(var i = 0; i < len; i += 1) { 
     result.push(array[i]); 
     if(i < len-1) { result.push(delim); } 
     delim = (delim === delim_one) ? delim_two : delim_one; 
    } 

    return result.join(''); 
} 

nums = "1,2,3,4,5,6,7,8,9,10" 
alternateDelims(nums.split(','), ';', ','); 
+0

'delim'変数を削除し、' result.push(i%2 == 0?delim_one:delim_two);と言ってこれを短くすることができます。 – nnnnnn

関連する問題