0

我试图解析以下字符串;

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

我需要能够将“[0]”部分更改为数字,“data[Product]”不会更改,而“[fieldname]”会更改。

我不知道如何用 javascript 来做,但有一个粗略的想法。

我所拥有的所有错误都在下面,但由于 [0] 每次它不起作用时都会发生变化;

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

小提琴; 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

我假设您正在尝试在循环中执行此操作,在这种情况下,您只需使其动态化。也不是替换不会更改当前字符串,它会返回一个新字符串,因此您需要将返回的值分配回名称。

    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 回答