去除非ASCII字符但允许货币符号。

3
我使用以下正则表达式从字符串中删除所有非ASCII字符。
String pattern = @"[^\u0000-\u007F]";
Regex rx = new Regex(pattern, RegexOptions.Compiled);
rx.Replace(data," ");

然而,我想允许使用货币符号(英镑符号)和商标符号。

我已修改上述正则表达式如下所示,并且它可以在我的情况下工作。是否有人可以确认该正则表达式是否有效?

 String pattern = @"[^\u0000-\u007F \p{Sc}]";

基本上,我希望允许所有的货币符号。

每当我要回答时,你就会编辑问题 :P - Oscar Mederos
抱歉。编辑完成 :) - NoobDeveloper
1
是的,你的正则表达式是正确的。它将匹配除了你指定的范围(0000-007F)或货币符号字符之外的任何内容。请参阅\p{Sc}的含义:http://www.regular-expressions.info/unicode.html#prop - Oscar Mederos
很好,如果我想进一步添加商标或版权符号的支持,那么下面的模式是否正确?字符串模式 = @ "[^ \ u0000- \ u007F \ p {Sc} \ u00A9 \ u2122]";简而言之,我只需要继续添加\ xxxx..对吗? - NoobDeveloper
1个回答

2

是的,你的正则表达式是正确的。

你的代码使用正则表达式匹配的字符替换成空字符。

那么你的正则表达式匹配哪些字符呢?

除了以下内容:

如果你只想保留其他一些字符,是的,你也可以像使用\p{Sc}一样添加它们。

编辑:

以后操作时要小心。正则表达式应该是[^\u0000-\u007F\p{Sc}](没有空格),尽管在这种情况下不重要,因为空格字符已经在ASCII范围内。


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