C#正则表达式可以用来去掉字符串中的句点(.)
本文关键字:字符串 句点 正则表达式 | 更新日期: 2023-09-27 18:20:29
我需要一个去掉非字母数字字符等的字符串;我使用了以下内容:
wordsstr = Regex.Replace(wordsstr, "[^A-Za-z0-9,-_]", "");
问题是字符串中保留了点(.),但没有指定要保留它们。我怎样才能确保圆点也被去除?
非常感谢。
您正在指定需要保留它们-您使用的是,-_
,它是从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]", "");
第一个正则表达式中的问题是-
字符定义了一个范围,因此您必须对其进行转义,使其按照您希望的方式运行。