[[{I:19, M:0, E:1, N:20, C:"8", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]
有这样一个JSON串,我想查找I:28开头的这样一个元素,然后用正则匹配,替换这个元素所在的整个{}为空,例如把{I:28, M:0, E:1, N:10, C:3, R:1}替换为空,以I:28开头的这个元素,在这个JSON中的位置不是固定的,其中的M,E,N,C,R的值也是不固定的,在{}的前面或后面或许会有“,”也或许没有“,”,如果前面有“,”就把“,”也删除,如果后面有“,”就把后面的“,”也删除,如果前面跟后面都有“,”,那么随便删除一个,查找以I:28为开头的{},然后替换这个{}为空
希望大家帮忙,谢谢,大半夜的发帖不容易,顶我哦^_^
有这样一个JSON串,我想查找I:28开头的这样一个元素,然后用正则匹配,替换这个元素所在的整个{}为空,例如把{I:28, M:0, E:1, N:10, C:3, R:1}替换为空,以I:28开头的这个元素,在这个JSON中的位置不是固定的,其中的M,E,N,C,R的值也是不固定的,在{}的前面或后面或许会有“,”也或许没有“,”,如果前面有“,”就把“,”也删除,如果后面有“,”就把后面的“,”也删除,如果前面跟后面都有“,”,那么随便删除一个,查找以I:28为开头的{},然后替换这个{}为空
希望大家帮忙,谢谢,大半夜的发帖不容易,顶我哦^_^
Regex reg = new Regex(@"(?<s>(?:,\s*))?{I:28[^}]*}(?(s)|(?:\s*,)?)");
//Regex regDel = new Regex(@"(,\s*)?{I:28[^}]*}(\s*,)?");
//string result = regDel.Replace(test, delegate(Match m) { if (m.Groups[1].Success && m.Groups[2].Success) return ","; return ""; });
string result = reg.Replace(test, "");
richTextBox2.Text = result;
这是过客兄给出的C#解决方法,现在求JS解决方法,谢谢
Regex reg = new Regex(@"(?<s>(?:,\s*))?{I:28[^}]*}(?(s)|(?:\s*,)?)");
//Regex regDel = new Regex(@"(,\s*)?{I:28[^}]*}(\s*,)?");
//string result = regDel.Replace(test, delegate(Match m) { if (m.Groups[1].Success && m.Groups[2].Success) return ","; return ""; });
string result = reg.Replace(test, "");
richTextBox2.Text = result;
这是过客兄给出的C#解决方法,现在求JS解决方法,谢谢
var str = "[[{I:19, M:0, E:1, N:20, C:\"8\", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]";
var reg = /(,\s*)?{I:28[^}]*}(\s*,)?/;
var result = str.replace(reg, function($0, $1, $2)
{
if($1 != null && $2 != null && $1.replace(/ /g, "") == "," && $2.replace(/ /g, "") == ",")
return ",";
return "";
});
document.write(result);
</script>
var str = "[[{I:19, M:0, E:1, N:20, C:\"8\", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2,
R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]";
var reg = /(,\s*)?{I:28[^}]*}(\s*,)?/;
var result = str.replace(reg, function($0, $1, $2)
{
if($1 != null && $2 != null && $1.replace(/ /g, "") == "," && $2.replace(/ /g, "") == ",")
return ",";
return "";
});
document.write(result);
</script>
var str = "[[{I:19, M:0, E:1, N:20, C:\"8\", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]";
var reg = /(,\s*)?{I:28[^}]*}(\s*,)?/g;
var result = str.replace(reg, function($0, $1, $2)
{
if($1 != null && $2 != null && $1.replace(/ /g, "") == "," && $2.replace(/ /g, "") == ",")
return ",";
return "";
});
document.write(result);
</script>
那么他会把所有I开头为1的多替换为空,如I:1 I:11 I:15 I:19等,麻烦过客兄再给解决下,谢谢
上面那个C#.NET的应该也存在这个问题,如果有时间麻烦您一并给解决吧
这东西可以用JSon来处理么。
如果是1的话
var reg = /(,\s*)?{I:1[\d^}]*}(\s*,)?/g;
//刚写错
var reg = /(,\s*)?{I:1[^\d}]*}(\s*,)?/g;
我不了解JSON,不过按道理JSON处理起来,不应该是这样处理的,应该有更简单的方法
加个\b改为
var reg = /(,\s*)?{I:1\b[^}]*}(\s*,)?/g;
C#的也是同样的处理方式
var arr = eval("("+str+")");
var array = new Array();
for(var i=0;i<arr.length;i++){
var js="[";
for(var j=0;j<arr[i].length;j++){
var json = arr[i][j];
if(json["I"]!="18"){
js += "{";
for(var s in json){
js+="\""+s+"\":\""+json[s]+"\",";
}
js=js.substring(0,js.length-1)+"},"
}
}
array.push(js.substring(0,js.length-1)+"],");
}
var result = array.join("");
document.write(result.substring(0,result.length-1))
/*
结果
[{"I":"19","M":"0","E":"1","N":"20","C":"8","R":"1"},
{"I":"1","M":"0","E":"1","N":"10","C":"1","R":"1"},
{"I":"3","M":"0","E":"1","N":"10","C":"1","R":"1"},
{"I":"2","M":"0","E":"1","N":"10","C":"1","R":"1"},
{"I":"25","M":"1","E":"1","N":"10","C":"3","R":"1"},
{"I":"26","M":"1","E":"1","N":"10","C":"3","R":"1"}],
[{"I":"15","M":"0","E":"1","N":"4","C":"7","R":"1"},
{"I":"8","M":"0","E":"1","N":"4","C":"2","R":"1"},
{"I":"5","M":"0","E":"1","N":"4","C":"2","R":"1"},
{"I":"4","M":"0","E":"1","N":"4","C":"2","R":"1"},
{"I":"23","M":"0","E":"1","N":"10","C":"3","R":"1"},
{"I":"22","M":"0","E":"1","N":"10","C":"3","R":"1"},
{"I":"21","M":"0","E":"1","N":"10","C":"3","R":"1"}],
[{"I":"16","M":"0","E":"1","N":"4","C":"7","R":"1"},
{"I":"9","M":"0","E":"1","N":"10","C":"1","R":"1"},
{"I":"7","M":"0","E":"1","N":"4","C":"2","R":"1"},
{"I":"6","M":"0","E":"1","N":"4","C":"2","R":"1"},
{"I":"28","M":"0","E":"1","N":"10","C":"3","R":"1"},
{"I":"27","M":"0","E":"1","N":"10","C":"3","R":"1"},{"I":"24","M":"0","E":"1","N":"10","C":"3","R":"1"}],
[{"I":"20","M":"0","E":"1","N":"30","C":"8","R":"0"},
{"I":"17","M":"0","E":"1","N":"30","C":"8","R":"1"},
{"I":"30","M":"0","E":"0","N":"1","C":"9","R":"1"},{"I":"14","M":"0","E":"0","N":"1","C":"9","R":"1"},
{"I":"12","M":"0","E":"0","N":"1","C":"9","R":"1"},
{"I":"11","M":"0","E":"1","N":"10","C":"1","R":"1"},
{"I":"10","M":"0","E":"1","N":"10","C":"1","R":"1"}]
*/
请问我I:后面的那个18是变量应该怎么写呢?我用双引号括起来,如var reg="/(,\s*)?{I:"+18+"\b[^}]*}(\s*,)?/g";
这样就不起作用了求解,谢谢
<input type="Submit" value="处理" onclick="opt();"><br />
<textarea id="result" rows="10" cols="100"></textarea><br />
<script type="text/javascript">
function opt()
{
var str = "[[{I:19, M:0, E:1, N:20, C:\"8\", R:1}, {I:1, M:0, E:1, N:10, C:1, R:1}, {I:3, M:0, E:1, N:10, C:1, R:1}, {I:2, M:0, E:1, N:10, C:1, R:1}, {I:25, M:1, E:1, N:10, C:3, R:1}, {I:26, M:1, E:1, N:10, C:3, R:1}], [{I:15, M:0, E:1, N:4, C:7, R:1}, {I:8, M:0, E:1, N:4, C:2, R:1}, {I:5, M:0, E:1, N:4, C:2, R:1}, {I:4, M:0, E:1, N:4, C:2, R:1}, {I:23, M:0, E:1, N:10, C:3, R:1}, {I:22, M:0, E:1, N:10, C:3, R:1}, {I:21, M:0, E:1, N:10, C:3, R:1}], [{I:16, M:0, E:1, N:4, C:7, R:1}, {I:9, M:0, E:1, N:10, C:1, R:1}, {I:7, M:0, E:1, N:4, C:2, R:1}, {I:6, M:0, E:1, N:4, C:2, R:1}, {I:28, M:0, E:1, N:10, C:3, R:1}, {I:27, M:0, E:1, N:10, C:3, R:1}, {I:24, M:0, E:1, N:10, C:3, R:1}], [{I:18, M:0, E:1, N:30, C:8, R:1}, {I:20, M:0, E:1, N:30, C:8, R:0}, {I:17, M:0, E:1, N:30, C:8, R:1}, {I:30, M:0, E:0, N:1, C:9, R:1}, {I:14, M:0, E:0, N:1, C:9, R:1}, {I:12, M:0, E:0, N:1, C:9, R:1}, {I:11, M:0, E:1, N:10, C:1, R:1}, {I:10, M:0, E:1, N:10, C:1, R:1}]]";
var number = document.getElementById("number").value;
var reg = new RegExp("(,\\s*)?{I:" + number + "\\b[^}]*}(\\s*,)?", "g");
var result = str.replace(reg, function($0, $1, $2)
{
if($1 != null && $2 != null && $1.replace(/ /g, "") == "," && $2.replace(/ /g, "") == ",")
return ",";
return "";
});
document.getElementById("result").value = result;
}
</script>