我需要修改類似於「¼杯糖」的字符串爲「糖杯」,即用「」替換所有小數符號。從字符串中刪除「¼」和「½」等所有小數符號
我已經提到這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