gpt4 book ai didi

c# - 正则表达式删除两个字符串之间的连字符

转载 作者:太空狗 更新时间:2023-10-29 21:48:47 26 4
gpt4 key购买 nike

我有一个字符串,我需要在其中替换所有连字符,但只能替换两个分隔符“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_”和“:”之间的所有内容。

my example

如果我能得到几行 C# 代码,那就太棒了!但我认为 RegEx 表达式会很好! :-)

谢谢!

编辑:原谅我!忘了提到上面的例子是一个更大的 json 字符串的一部分。因此用 mystring.Replace("-", "") 进行简单的替换是行不通的。

EDIT2:更新my example

最佳答案

试试这段代码:

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);

结果会是

clients_field_78f225e01a784930b251ad2217baeb1b: 2017-07-26 clients_field_ce1649d318e648afa9fb871c577c7da6: 2018-12-31

关于c# - 正则表达式删除两个字符串之间的连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45575639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com