gpt4 book ai didi

c# - 多个字符串替换(在同一字符串内)

转载 作者:行者123 更新时间:2023-11-30 16:03:23 24 4
gpt4 key购买 nike

我有一个字符串。为简单起见,它可能看起来像这样:

\r\n\r\n\r\n

它也可能有更多的出现 '\r\n' - 我只在这里发布最简单的问题。

我需要在每次出现的 '\r\n\r\n' 之间插入一个空格 对于上面的示例,我希望最终得到一个如下所示的字符串:

\r\n \r\n \r\n

我可以使用以下代码执行此操作(我不喜欢它,因为它会创建大量字符串以产生预期结果):

string newString = "\r\n\r\n\r\n";
while (newString.Contains("\r\n\r\n"))
newString = newString.Replace("\r\n\r\n", "\r\n \r\n");

我在尝试使用 string.Replace 或找出可以为我执行此操作的正则表达式时遇到问题。

如果我尝试像这样使用 string.replace(甚至是 StringBuilder.Replace)...

var result = "\r\n\r\n\r\n".Replace("\r\n\r\n", "\r\n \r\n");

我结束了

"\r\n \r\n\r\n"  //There is no space between the last two carriage return / line feed

我认为正则表达式替换可以解决问题,但我不知道如何让正则表达式引擎进行惰性匹配,以便在第一次替换后替换所有出现的\r\n。

我一直在搜索 SO 和谷歌试图找到类似的问题,但没有找到任何有用的东西。如果这是重复的,我提前道歉,但如果是,我找不到它!

总而言之,我可以使用 while 循环来做到这一点,但我想知道是否有更优雅的解决方案?

编辑

抱歉 - 这还有一点:我的代码也可能会审查如下所示的字符串:

5\r\n\r\nTest\r\n

在这种情况下,我希望看到如下所示的字符串:

5\r\n \r\nTest\r\n

所以 - 我不想只用 '\r\n ' 替换 '\r\n' 因为这会给我一个看起来像这样的字符串:

"5\r\n \r\n Test\t\n "

最佳答案

您可以使用向前看和向后看,以便您只匹配“之间”部分。

string test = "\r\n\r\n\r\n";
Regex reg = new Regex("(?<=\r\n)(?=\r\n)");
test = reg.Replace(test, " ");

这将导致 test 为“\r\n\r\n\r\n”。

关于c# - 多个字符串替换(在同一字符串内),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36450444/

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