4

.NET では、(可能であれば) さまざまな種類の日本語の数字文字列を区別する必要があります。

"1"日本語では"1"、半角文字で、 "ⅰ"、 、 など"Ⅰ"、数字列の書き方が異なります。"①"

"MyString1"とのような文字列を比較する必要がありますが"MyString①"、明らかな理由でそれらは等しくありません。"①"タイプ文字を自動的に自動的に変更する方法があるかどうか疑問に思ってい"1"ますか?

編集

明らかな答えは、可能なすべての「①」タイプの文字のリストを作成し(それらの数には限りがあります)、ターゲット文字列でそれらを置き換えることであることを知っています。しかし、私の意見では、これは非常に「良い」方法ではなく、非常に堅牢でもありません...したがって、一般的な方法がある場合は、むしろそれを使用したいと思います。

編集

申し訳ありませんが、私は以前にそのボット"①"を書いて"1"おり、数字と見なされていますが、そうではありません. IsNumeric"①"は false として表示されます。したがって、直接置換を使用する以外に、一方から他方に切り替える方法は実際にはまったくないのではないかと思います。

4

2 に答える 2

4

fileformat.infoは、で囲まれた数字を通常の数字に分解できることを教えてくれます。ideoneでこれを調べてみると、.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

とはいえ、文字列を正規化すると、そのままにしておきたい他の文字も台無しになる可能性があるという注意点があります。

于 2013-03-15T02:40:37.423 に答える
1

OK、いろいろいじってみると、「①」を数値 ( "1")に変換できることがわかりChar.GetNumericValue()ましIsNumeric("①")False

そして、これは「ⅰ」と「Ⅰ」でも機能するようです(文字ではなく、「1」の日本の数字形式)

文化の変化をもっと理解できたらいいのに…

于 2013-03-15T02:37:00.857 に答える