我想替换花括号和冒号之间的一部分字符串。假设我有一个字符串:
{Name: {\"before\":'Aj', \"after\":'Ajay'} },
所以现在我想用{Name:
替换字符串{"Name":
的部分。
我尝试过Regex.Replace(rectifyAfter, @"/{([^\s].+?)(\s|$):", "{\"$1\":")
。但它没有做替换。
有人可以帮我吗?
答案 0 :(得分:1)
以下正则表达式可以解决这个问题:
(?:\{)(?<Property>[a-z0-9]+)(?:\:)
它的作用:
(?:\{)
- 匹配,但不会捕获开头大括号
(?<Property>[a-z0-9]+)
- 捕获名为Property
(?:\:)
- 再次匹配但未在属性后捕获:
所以,基本上,您要做的是匹配模式{Name:
,但将其替换为{"
+ 值Property
组 + {{ 1}}。
以下是替换代码:
:
string pattern = @"(?:\{)(?<Property>[a-z0-9]+)(?:\:)";
Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
string targetString = @"{Name: {\""before\"":'Aj', \""after\"":'Ajay'} },";
string replacement = @"{""${Property}"":";
return regex.Replace(targetString, replacement);
是捕获组的名称,它将保存您的属性的名称。
答案 1 :(得分:0)
我不明白你为什么需要正则表达式。只需使用简单的.Replace
string json = "" //Whatever your JSON string is.
json = json.Replace("{Name:", "{\"Name\":");