あるときJavaプログラムで、入力されたテキストデータに含まれる所謂「全角・半角」の区別を無視したいことがありました。例えば「RAM」という言葉が含まれていたら、所謂「全角」であろうが「半角」であろうがそれは同じ文字なので、重複符号化のせいにすぎないそういう非本質的な区別は無視したいわけです。 本当ならこれぞまさに正規化処理の出番で、JavaではUnicode正規化が簡単に使えるようになっているのですが、しかしUnicodeの正規化仕様はちょっと使いづらいところがある。 というのは、通常の正規化形式であるNFC, NFDはいずれも、「全角・半角」の区別をそろえてくれないので私の目的の役には立たない。一方、NFKC, NFKDはというと、「全角・半角」をそろえてくれるのはいいのだけど、三点リーダがピリオド3つになってしまうとか、記号類について余計なお節介をしてくれて何がどうなるのか正直私も覚