从字符串中删除所有分数符号,如“1/4”和“1/2”

2022-08-31 15:25:58

我需要将类似于“1/4杯糖”的字符串修改为“糖杯”,这意味着将所有分数符号替换为“”。

我已经参考了这篇文章,并设法使用下面行删除了1/4:

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

但是我如何替换每个可能的分数符号呢?


答案 1

1/41/2 这样的分数符号属于 Unicode 类别编号,其他 [否]。如果可以删除该组中的所有 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]+", "");

答案 2

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

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

推荐