char
に IsAsciiDigit
IsBetween
などが増えているのに気が付いた
どうやら .NET 7 でいくつか追加されていたらしい dotnet/runtime#68868
今までみんな勝手に実装してたから標準に入ったのはいいね
もともと char.IsDigit
, IsNumber
, IsLetter
などがあったが、これらは Unicode のカテゴリをもとに分類されている。たとえば:
IsNumber
は Number カテゴリに含まれるものが true になるので、たとえばローマ数字 (Ⅸ
) や分数 (⅔
) なども含まれるIsDigit
は Number の下位カテゴリである十進数字 (Number, Decimal Digit) のみが true になり、全角数字 (9
) やベンガル数字 (৯
) なども含まれる
実際、ベンガル数字はいいけどローマ数字はダメ、とかいう要件発生することないし、例えば [0-90-9]
のつもりで誤って IsDigit
使うようなこともあるあるだったのでは。
今後は IsAsciiXXX を使えばよいとなることが増えそう