我需要修改类似于“¼杯糖”的字符串为“糖杯”,即用“”替换所有小数符号。从字符串中删除“¼”和“½”等所有小数符号
我已经提到这post和管理,以去除¼使用此行:
itemName = itemName.replaceAll("\u00BC", "");
但我怎么更换每一个可能的分数符号在那里?
我需要修改类似于“¼杯糖”的字符串为“糖杯”,即用“”替换所有小数符号。从字符串中删除“¼”和“½”等所有小数符号
我已经提到这post和管理,以去除¼使用此行:
itemName = itemName.replaceAll("\u00BC", "");
但我怎么更换每一个可能的分数符号在那里?
像¼
和½
等分数符号属于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]+", "");
请注意,字体可能呈现_any_序列像23/12一样分数,因此可以显示任何分数,而不仅仅是预先组成的分数。如果发生这种情况,您可能需要删除的不仅仅是一个字符列表 – Joey
为什么+ in正则表达式吗?难道你只是简单地忽略它或者为了效率而做任何事情吗? – HopefullyHelpful
@HopefullyHelpful在这种情况下,'+'操作符会导致字符集('[[...]')重复多次看到这个答案更多详细信息:http://stackoverflow.com/a/3850256/3088508 –
您可以使用下面的正则表达式用空字符串替换所有分数。
str = str.replaceAll("(([\\xbc-\\xbe])?)", "")
为什么额外的捕获组“()”和可选的“?”匹配? – MT0
你知道,为了以防万一,你想用“”替换“” – HopefullyHelpful
什么有关删除所有的非字母数字字符,除了空间:使用 :itemName.replaceAll( “[^ A-ZA-Z0-9]”, “”); –
Java不是Android – Ungeheuer
@Unngeheuer明白了。标签已移除。 – Michelle