web-dev-qa-db-ja.com

文字列から「¼」や「½」などのすべての分数記号を削除する

「1/4カップの砂糖」に似た文字列を「1杯の砂糖」に変更する必要があります。つまり、すべての分数記号を「」に置き換えます。

私はこれを参照しました post この行を使用して¼を削除することができました:

itemName = itemName.replaceAll("\u00BC", "");

しかし、可能性のあるすべての分数記号をそこに置き換えるにはどうすればよいですか?

62
Michelle

¼½ などの小数記号は、Unicodeカテゴリに属します Number, Other [No] 。そのグループの676文字をすべて削除しても問題ない場合は、次の正規表現を使用できます。

itemName = itemName.replaceAll("\\p{No}+", "");

そうでない場合は、いつでも明示的にリストできます。

// As characters (requires UTF-8 source file encoding)
itemName = itemName.replaceAll("[¼½¾⅐⅑⅒⅓⅔⅕⅖⅗⅘⅙⅚⅛⅜⅝⅞↉]+", "");

// As ranges using unicode escapes
itemName = itemName.replaceAll("[\u00BC-\u00BE\u2150-\u215E\u2189]+", "");
97
Andreas

以下の正規表現を使用して、すべての分数を空の文字列に置き換えることができます。

str = str.replaceAll("(([\\xbc-\\xbe])?)", "")
2
Sumit Gulati