說我有下面的代碼的Java的replaceAll失敗,美元符號源字符串
String test = "$abc<>";
test = test.replaceAll("[^A-Za-z0-9./,#-' ]", "");
測試現在是 「$ ABC」。
爲什麼它保持美元符號?
說我有下面的代碼的Java的replaceAll失敗,美元符號源字符串
String test = "$abc<>";
test = test.replaceAll("[^A-Za-z0-9./,#-' ]", "");
測試現在是 「$ ABC」。
爲什麼它保持美元符號?
你的字符的列表保存包括#-'
,這是從Unicode U + 0023(在#
符號)到U + 0027(在'
符號)的範圍內,包括$
(U + 0024)。
如果你的意思是#-'
被解釋爲三個字符的名單,只是逃避它:
test = test.replaceAll("[^A-Za-z0-9./,#\\-' ]", "");
或把它在列表的末尾:
test = test.replaceAll("[^A-Za-z0-9./,#' -]", "");
因爲您必須將-
作爲角色等級中的最後一個字符。
嘗試
test.replaceAll("[^A-Za-z0-9./,#' -]", "");
它會工作:)
參見In a java regex, how can I get a character class e.g. [a-z] to match a - minus sign?
和Pattern(按Ctrl-F 「字符類」)
注意的Javadoc一個字符類中的一組元字符不同於一個字符呃類。例如,正則表達式。在一個字符類中失去其特殊含義,而表達式 - 成爲一個範圍形成元字符。
美元符號之間x23和x27。它應該有它。哦,但由於課程被否定,因此被排除在外。哪個會離開#$%&' – sln