我试图解析以下字符串;
"data[Product][0][fieldname]"
我需要能够将“[0]”部分更改为数字,“数据[产品]”不会更改,而“[fieldname]”将更改。
我不确定如何使用javascript,但有一个粗略的想法。
我所有的错误,在下面,但因为[0]每次都不起作用而变化;
name="data[Product][0][fieldname]";
name.replace('[0]', '['+newrowid+']'
的jsfiddle; http://jsfiddle.net/fuzzy_dunlop/8WKcs/
答案 0 :(得分:5)
使用正则表达式:
var a = "data[Product][0][fieldname]";
var re = /(.*\[.*\]\[)(.*)(\]\[.*\])/gi;
newstr = a.replace(re, "$1" + "YourString" + "$3");
document.write("Now: " + newstr);
答案 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+']');
}