0

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

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

「[0]」の部分を数値に変更できるようにする必要があります。「[fieldname]」が変更される間、「data[Product]」は変更されません。

JavaScriptでそれを行う方法がわかりませんが、大まかなアイデアがあります。

私が間違っているのは以下のとおりですが、[0]は毎回変化するため、機能しません。

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

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

4

4 に答える 4

5

正規表現を使用します:

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

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

コード例: http://jsfiddle.net/NKbd9/1/

于 2012-04-12T14:12:49.677 に答える
1

代わりにこれを使用してください

name = name.replace('[0]', '['+newrowid+']');
于 2012-04-12T14:10:32.760 に答える
1

Replace は、文字列の代わりに正規表現を取ることができます。

これを試して:

name="data[Product][0][fieldname]";
name.replace(/\[\d\]/, '['+newrowid+']');
于 2012-04-12T14:13:25.547 に答える
0

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

    var i = 0, 
        len = 10,
        name,
        newrowid = 13;
for(; i <len; i++) {
    name = "data[Product]["+i+"][fieldname]";
    name = name.replace('['+i+']', '['+newrowid+']');
}
于 2012-04-12T14:10:10.543 に答える