我有一个字符串,我需要替换所有连字符,但只在两个分隔符之间,"clients_field_"和":"
例如:
"clients_field_4741a6c5-3855-4455-b487-0b38b0038ae6": "info@domain.com",
"clients_field_78f225e0-1a78-4930-b251-ad2217baeb1b": "2017-07-26"
删除所有连字符后,它应如下所示:
"clients_field_4741a6c538554455b4870b38b0038ae6": "info@domain.com",
"clients_field_78f225e01a784930b251ad2217baeb1b": "2017-07-26"
我试图找到一个有效的正则表达式,但我需要一些帮助.我尝试了表达式(?<=clients_field_)(.*)(?=:),但这当然会选择"clients_field_"和":"之间的所有内容.
看看我的例子
如果我能获得几行C#代码,那就太棒了!但我认为RegEx Expression会很好!:-)
谢谢!
编辑:原谅我!忘记提到上面的例子是一个更大的json字符串的一部分.所以使用mystring.Replace(" - ","")进行简单替换是行不通的.
EDIT2:更新了我的例子
试试这个代码:
var input = "clients_field_78f225e0-1a78-4930-b251-ad2217baeb1b: 2017-07-26\n"
    + "clients_field_ce1649d3-18e6-48af-a9fb-871c577c7da6: 2018-12-31";
var regex = new Regex("^(?<const>clients_field_)(?<p1>[^:]+)(?<p2>.+)$", RegexOptions.Multiline);
var lines = regex.Matches(input)
    .Cast<Match>()
    .Select(g => $"{g.Groups["const"].Value}{g.Groups["p1"].Value.Replace("-", "")}{g.Groups["p2"].Value}");
var result = string.Join("\n", lines);
result将会
客户字段_78f225e01a784930b251ad2217baeb1b:2017-07-26 客户字段_ce1649d318e648afa9fb871c577c7da6:2018-12-31