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

Mic*_*lle 62 java replaceall

我需要将类似于"¼杯糖"的字符串修改为"杯糖",这意味着用""替换所有分数符号.

我已经提到过这篇文章并设法使用以下行删除¼:

itemName = itemName.replaceAll("\u00BC", "");
Run Code Online (Sandbox Code Playgroud)

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

And*_*eas 96

分数符号喜欢¼½属于Unicode类别Number, Other [No].如果您可以删除该组中的所有676个字符,则可以使用以下正则表达式:

itemName = itemName.replaceAll("\\p{No}+", "");
Run Code Online (Sandbox Code Playgroud)

如果没有,您可以始终明确列出它们:

// As characters (requires UTF-8 source file encoding)
itemName = itemName.replaceAll("[¼½¾????????????????]+", "");

// As ranges using unicode escapes
itemName = itemName.replaceAll("[\u00BC-\u00BE\u2150-\u215E\u2189]+", "");
Run Code Online (Sandbox Code Playgroud)

  • @HopefullyHelpful是的,他们没有必要,是的,他们应该提高效率.人们可能不应该从中得出结论,但是如果你在[this regex101 sample](https://regex101.com/r/mwDnAG/1)的表达式末尾添加一个"+",执行时间将从1到0毫秒,步数将从32降至14.在没有任何重复的输入[它只添加一步](https://regex101.com/r/bm80sa/2) (6认同)
  • 请注意,字体可以将_any_ sequence(如23/12)渲染为分数,从而使得任何分数都可以像这样显示,而不仅仅是预先组合的分数.如果发生这种情况,您可能需要删除不仅仅是一个字符列表. (2认同)