.net - 区分日语数字格式

标签 .net string string-comparison

在 .NET 中,我需要(如果可能)区分不同类型的日语数字字符串。

在日语中,数字字符串可以用不同的方式书写,例如 "1""1" , "ⅰ" , "Ⅰ" , "①"在半角字符中。

我需要比较像 "MyString1" 这样的字符串和 "MyString①" ,并且出于显而易见的原因,它们不相等。
我想知道是否有办法自动更改"①"输入字符到 "1"自动地?

编辑

我知道显而易见的答案是列出所有可能的“①”类型字符(这些字符的数量有限)并在目标字符串中替换它们。但在我看来,这不是一个非常“好”的方式,也不是非常健壮......所以如果有一种通用的方式,我宁愿使用它。

编辑

抱歉,我之前写过那个机器人 "①""1"被视为数字,但它们不是。 IsNumeric "①"出现错误。所以我想除了使用直接替换之外,实际上可能根本没有办法从一个切换到另一个。

最佳答案

fileformat.info告诉我 circled digits可以分解成正则数字。戳这个in ideone显示 normalization forms这将在 .NET 中实现 KC 或 KD:

var one  = "①";
Console.WriteLine(one);

Console.WriteLine(one.Normalize(NormalizationForm.FormC)); // ①
Console.WriteLine(one.Normalize(NormalizationForm.FormD)); // ①

Console.WriteLine(one.Normalize(NormalizationForm.FormKC)); // 1
Console.WriteLine(one.Normalize(NormalizationForm.FormKD)); // 1

也就是说,需要注意的是,规范化字符串也可能会破坏您希望保持原样的其他字符。

关于.net - 区分日语数字格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15423581/

相关文章:

regex - Perl:遇到某个字符后删除字符串的其余部分

c - 从 fgets() 输入中删除尾随换行符

java - 为什么设置两个字符串的值相同并使用==比较它们会返回true?

Python:匹配元组中的两个元素,返回第三个

c# - 在 .NET 中模仿 Windows 的 'Run' 窗口

c# - IEqualityComparer 未按预期工作

c# - 当从 javascript 调用时,UpdatePanel 中的 asp.net 按钮会导致 Firefox 15.0.1 中的整个页面刷新

c++ - 如何用另一个文本替换字符串的特定部分?

java - FilenameUtils.getExtension 比较返回 false

c# - 代码分析规则异常情况