2012-04-12 14 views
0

次の文字列を解析しようとしています。文字列を解析する方法

"data[Product][0][fieldname]" 

iが番号、「データ[製品]」「[フィールド名]」変わりつつ習慣の変化に「[0]」の部分を変更できるようにする必要があります。

どのようにjavascriptで行うのかわかりませんが、大まかなアイデアがあります。

私はどちらが間違っているのですか?下にありますが、[0]は毎回変わります。

name="data[Product][0][fieldname]"; 
name.replace('[0]', '['+newrowid+']' 

jsfiddle; http://jsfiddle.net/fuzzy_dunlop/8WKcs/

+0

はこれを試してみてください?私はそれが[0]、[1] ...などであることを意味しますか? – gabitzish

+0

この名前は入力名属性の一部ですか、または実際のオブジェクトとして解析する必要があるJavaScriptオブジェクトですか? –

+1

これは、私が「ズームアウト」できれば全体的にはるかに優れた解決策が見つかるだろうと思う質問の1つです。 – Pointy

答えて

5

は、正規表現を使用し

var i = 0, 
     len = 10, 
     name, 
     newrowid = 13; 
for(; i <len; i++) { 
    name = "data[Product]["+i+"][fieldname]"; 
    name = name.replace('['+i+']', '['+newrowid+']'); 
} 
+0

私はさらに正規表現について具体的になるつもりでした: '^ data \ [Product \] \ [(\ d *)\] \ [(\ S *)\] $' JavaScriptの正規表現を扱うための正確な構文を覚えていない。 ;) –

+0

より具体的には、失敗が適切に捕らえられればよいでしょう。私は彼の質問で指定したので、私は "製品"を修正することに同意するだろう。しかし、\ dと\ Sは私たちの部分の前提です。 – Konerak

+0

正規表現は私の最愛のPerlに非常に近いですが、私もJSFiddleを質問尋問者へのサービスとしてだけでなく、ここで再確認するための方法としても使用しました;] – Konerak

0

ループ内でこれを実行しようとしていると仮定します。この場合、動的にする必要があります。また、置き換えでは現在の文字列が変更されないので、新しい文字列が返されるため、返された値をnameに戻す必要があります。

var a = "data[Product][0][fieldname]"; 
var re = /(.*\[.*\]\[)(.*)(\]\[.*\])/gi; 

newstr = a.replace(re, "$1" + "YourString" + "$3"); 
document.write("Now: " + newstr); 

コード例:この代わりに

name = name.replace('[0]', '['+newrowid+']'); 
1

を交換してくださいではなく、文字列の正規表現を取ることができます。あなたはそのフィールドを反復処理する必要が

name="data[Product][0][fieldname]"; 
name.replace(/\[\d\]/, '['+newrowid+']'); 
関連する問題