C#正则表达式可以用来去掉字符串中的句点(.)

本文关键字:字符串 句点 正则表达式 | 更新日期: 2023-09-27 18:20:29

我需要一个去掉非字母数字字符等的字符串;我使用了以下内容:

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

问题是字符串中保留了点(.),但没有指定要保留它们。我怎样才能确保圆点也被去除?

非常感谢。

C#正则表达式可以用来去掉字符串中的句点(.)

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

如果,-_只是表示逗号、短划线和下划线,则需要转义短划线,例如:

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

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

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

如果这不是目的,请更具体地说:"非字母数字字符等"并不是足够的信息。

尝试以下代码:

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

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

尝试

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

如果你只想拥有字母数字字符,那就更好了:

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

第一个正则表达式中的问题是-字符定义了一个范围,因此您必须对其进行转义,使其按照您希望的方式运行。