在 .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/