从字符串中删除所有分数符号,如“¼”和“½”

Removing all fraction symbols like “¼” and “½” from a string

我需要将类似于“¼ 杯糖”的字符串修改为 "cups of sugar",意思是将所有分数符号替换为“”。

我已参考此 post 并使用此行成功删除了 ¼:

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

但是我该如何替换所有可能的分数符号呢?

分数符号,如 ¼ and ½ belong to Unicode Category 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]+", "");

您可以使用下面的正则表达式将所有分数替换为空字符串。

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