如何解析字符串

时间:2012-04-12 14:03:52

标签: javascript string replace

我试图解析以下字符串;

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

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

我不确定如何使用javascript,但有一个粗略的想法。

我所有的错误,在下面,但因为[0]每次都不起作用而变化;

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

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

4 个答案:

答案 0 :(得分: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/

答案 1 :(得分:1)

改为使用

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

答案 2 :(得分:1)

替换可以使用正则表达式而不是字符串。

试试这个:

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

答案 3 :(得分:0)

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

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