需要 C# 正则表达式来替换字符串内部的空格。

3
使用C#,我需要一些代码来使用正则表达式将引号内的空格替换为管道符(|)。问题是该字符串可能包含多个带引号的表达式,我只想处理引号内的空格
我尝试了一些东西,但是我不知道如何处理引号内可能有的变量数量等问题。
以下是一些可能输入的示例和所需的输出:
"word1 word2" -> "word1|word2"
"word1 word2" word3 "word4 word5" -> "word1|word2" word3 "word4|word5"
word1 "word2 word3" -> word1 "word2|word3"
非常感谢您的帮助,希望我能学到正则表达式。

2
在引号内部可以使用转义引号吗? - Jon Senchyna
1
需要使用正则表达式吗?我认为一个简单的循环会更清晰地完成任务。 - Sergey Kalinichenko
@dasblinkenlight - 完全同意。每当我需要处理带引号的字符串时,循环总是更容易调试和阅读。这只需要几行代码,并且执行效率也更高。 - Josh
2个回答

8
使用正则表达式查找引号,并使用普通的替换方法替换空格:
str = Regex.Replace(str, @"""[^""]+""", m => m.Value.Replace(' ', '|'));

哎呀,你比我快了。你在“不匹配”语句中使用两个引号的原因是什么? - Delusional Logic
@Guffa,我还是不明白,你的另一种方法看起来对我来说是正确的,但是我就是不理解其中的那两个,我可能需要再多尝试一下C#才能明白... - Delusional Logic
@DelusionalLogic:在@分隔的字符串中,您可以使用""来获取",就像在常规字符串中使用\"一样。 - Guffa
@ColeJohnson 你说得很对。我完全忽略了“@”并没有看到它。 - Jon Senchyna
@Guffa,哦,所以这只是C#做的一件小事?它似乎并不合乎逻辑。无论如何,谢谢你,谢谢你。现在你的代码更有意义了。 - Delusional Logic
显示剩余3条评论

0
/["][^"]+["]/g

使用这个模式来获取引号内的字符串,然后对返回的字符串进行替换。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接