什么C#regex表达式可用于去除字符串中的点(。)?

时间:2012-01-17 19:21:01

标签: c# asp.net .net

我需要一个带有非字母数字字符的字符串,以及从中删除的字符串;我使用了以下内容:

wordsstr = Regex.Replace(wordsstr, "[^A-Za-z0-9,-_]", "");

问题是点(。)s留在字符串中但尚未指定保留它们。我怎么能确保点也被摆脱?

非常感谢。

3 个答案:

答案 0 :(得分:8)

指定需要保留它们 - 您正在使用,-_,这是从U + 002C到U + 005F的所有内容,包括U + 002E(句点)。< / p>

如果您的意思是,-_只是意味着逗号,破折号和下划线,则您需要转义短划线,例如:

wordsstr = Regex.Replace(input, @"[^A-Za-z0-9,\-_]", "");

或者,(如在Oded的评论中)将短划线作为集合中的第一个或最后一个字符,以防止它被解释为范围说明符:

wordsstr = Regex.Replace(input, "[^A-Za-z0-9,_-]", "");

如果这不是目标,请更具体:“非字母数字字符等”并不足以让您继续使用。

答案 1 :(得分:1)

尝试以下代码:

wordsstr = Regex.Replace(wordsstr, "[^-A-Za-z0-9,_]", "");

如果你写下你的期望和实际结果,你的问题会更容易理解。

答案 2 :(得分:1)

尝试

 wordstr = Regex.Replace(wordstr, "[^A-Za-z0-9,\\-_]", "");

或更好,如果你只想要字母数字字符:

wordstr = Regex.Replace(wordstr, "[^A-z0-9]", "");

你的第一个正则表达式中的问题是- char定义了一个范围,因此你必须将其转义以使其按照你想要的方式运行。