正则表达式替换多个字符

时间:2012-10-21 16:35:34

标签: c# regex string replace

我所拥有的是一个程序,它从文本框中获取用户的输入并在其末尾添加句点。我试图解决的问题是,如果用户在他们键入的内容的末尾放置一个句点,那么我希望能够删除该句号。我尝试使用字符串替换方法,但只允许您为单个字符执行此操作。我想到的下一件事是正则表达式。

我试过了:

finalString = Regex.Replace(finalString, "..", ".");

但它所做的只是用句点替换每个角色。是否有正则表达式可以让我替换彼此相邻的2个句点?

3 个答案:

答案 0 :(得分:1)

.具有特殊含义,因此您需要使用\

将其转义
finalString = Regex.Replace(finalString, "\\.\\.$", ".");

或简单地使用逐字符号

finalString = Regex.Replace(finalString, @"\.\.$", ".");

如果句点的位置在字符串的最后部分,则在正则表达式结尾处添加$

答案 1 :(得分:1)

如果要在正则表达式中使用任何这些字符作为文字,则需要使用反斜杠转义它们。

左方括号[,反斜杠\,插入符号^,美元符号$,句点或点.,垂直方向条形或竖线符号|,问号?,星号或星号*,加号+,左侧括号(和结束圆括号)

Good Read

答案 2 :(得分:1)

正则表达式中的

.表示匹配任何字符。在您的情况下..表示匹配任意两个字符并将其替换为.

你应该像\.

一样逃避它

应该是

finalString = Regex.Replace(finalString, @"\.\.", ".");