gpt4 book ai didi

c# - 如何替换字符串中每次出现的一组分隔符之间的任何特殊字符的所有实例?

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:30 25 4
gpt4 key购买 nike

我正在尝试替换字符串中每次出现的一组分隔符之间的任何特殊字符的所有实例。我相信该解决方案将包括正则表达式 match 的某种组合以检索每组定界符之间的文本和正则表达式 replace 以替换匹配中的每个违规字符空间。这是我目前所拥有的:

string input = "***XX*123456789~N3*123 E. Fake St. Apt# 456~N4*Beverly Hills*CA*902122405~REF*EI*902122405~HL*1*1*50*0~SBR*P*18*******MA~NM1*IL*1*Tom*Thompson*T***MI*123456789A~N3*456 W. False Ave.*Apt. #6B~N4*Beverly Hills*CA*90210~DMG*";
string matchPattern = "(~N3\\*)(.*?)(~N4\\*)";
string replacePattern = "[^0-9a-zA-Z ]?";

var matches = Regex.Matches(input, matchPattern);
foreach (Match match in matches)
{
match.Value = "~N3*" + Regex.Replace(match.Value, replacePattern, " ") + "~N4*";
}

MessageBox.Show(input);

我希望消息框显示以下内容:

"***XX*123456789~N3*123 E  Fake St  Apt  456~N4*Beverly Hills*CA*902122405~REF*EI*902122405~HL*1*1*50*0~SBR*P*18*******MA~NM1*IL*1*Tom*Thompson*T***MI*123456789A~N3*456 W  False Ave *Apt   6B~N4*Beverly Hills*CA*90210~DMG*"

显然这是行不通的,因为我无法在循环内分配给匹配的值,但我希望你能遵循我的思路。重要的是,任何不在定界符之间的字符都保持不变。任何方向或建议都会有所帮助。非常感谢!

最佳答案

Regex.Replace 与匹配评估器一起使用,您可以在其中调用第二个 Regex.Replace:

string input = "***XX*123456789~N3*123 E. Fake St. Apt# 456~N4*Beverly Hills*CA*902122405~REF*EI*902122405~HL*1*1*50*0~SBR*P*18*******MA~NM1*IL*1*Tom*Thompson*T***MI*123456789A~N3*456 W. False Ave.*Apt. #6B~N4*Beverly Hills*CA*90210~DMG*";
string matchPattern = @"(~N3\*)(.*?)(~N4\*)";
string replacePattern = "[^0-9a-zA-Z ]";

string res = Regex.Replace(input, matchPattern, m =>
string.Format("{0}{1}{2}",
m.Groups[1].Value,
Regex.Replace(m.Groups[2].Value, replacePattern, " "), // Here, you modify just inside the 1st regex matches
m.Groups[3].Value));
Console.Write(res); // Just to print the demo result
// => ***XX*123456789~N3*123 E Fake St Apt 456~N4*Beverly Hills*CA*902122405~REF*EI*902122405~HL*1*1*50*0~SBR*P*18*******MA~NM1*IL*1*Tom*Thompson*T***MI*123456789A~N3*456 W False Ave Apt 6B~N4*Beverly Hills*CA*90210~DMG*

查看 C# demo

实际上,由于 ~N3*~N4* 是文字字符串,您可以在模式中使用单个捕获组,然后将这些定界符添加为硬编码在匹配评估器中,但由您决定什么最适合您。

关于c# - 如何替换字符串中每次出现的一组分隔符之间的任何特殊字符的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42237823/

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