【发布时间】:2018-03-26 18:05:23
【问题描述】:
我正在尝试从字符串中的任何数字系统中查找数字。我发现 .NET 正则表达式语言支持查找 unicode character categories,所以我想我可以使用它来捕获我的数字(此时我可以合理地预期我正在读取的字符串来自 UTF-8 编码文件)。
问题是我似乎无法正确识别所有数字。这是a fiddle,我试图在其中识别一些数字,但有些没有被识别为 unicode 数字(相同的结果来自在 .NET 版本 4.6.2 上本地运行具有相同代码的控制台应用程序)。我从一个 unicode 数字类别列表here 中提取了小提琴中的每个测试数字。
鉴于这个小提琴,.NET 正则表达式语言似乎无法将标准中的所有 unicode 数字识别为数字。它是否正确?似乎大多数情况都是正确的,所以我可能仍然可以将它用于我正在做的事情,但我想知道我是否做错了什么,或者如果微软有一个我找不到与这个问题。
编辑:根据评论者的要求,这是小提琴中的代码:
string[] numbers = new string[] { "1", "¼", "㆓", "⑱", "២", "꘩", "꤁", "〺", "፷", "????", "????","????", "????"};
string pattern = @"\p{N}";
foreach (string num in numbers ) {
Console.WriteLine(string.Format("{0}, {1}", num, Regex.IsMatch(num, pattern)));
}
还有输出:
1, True
¼, True
㆓, True
⑱, True
២, True
꘩, True
꤁, True
〺, True
፷, True
????, False
????, False
????, False
????, False
【问题讨论】:
-
请不要将您的代码和数据in your question放在外部网站上。