我編程在Java中刪除的文字,我有一個類似於此弦數:Java的正則表達式之間幷包括括號從字符串
"Avg. Price ($/lb)"
"Average Price ($/kg)"
我想刪除從兩個字符串($/lb)
和($/kg)
和會留下
"Avg. Price"
"Average Price".
我的代碼檢查是否一個字符串海峽變量匹配上面的字符串之一,如果確實如此,替換文本中包括一個空字符串括號:
if(str.matches(".*\\(.+?\\)")){
str = str.replaceFirst("\\(.+?\\)", "");
}
當我將str.matches更改爲str.contains(「$/lb」);作爲一個測試,想要的子字符串被刪除,這導致我相信if語句有問題。任何幫助,我做錯了什麼?謝謝。
更新 我改變了if語句:
if(str.contains("(") && str.contains (")"))
也許不是一個完美的解決方案,但它似乎工作。
你正確顯示對我的作品的片斷。所以這個問題在你程序中的其他地方。也許你可以發佈你的整個程序而不是兩行? –
程序也適合我。我運行了以下代碼片斷:'String str =「Hi($/lb)」; System.out.println(「\」「+ str +」\「」);如果(str.matches(「。* \\(。+?\\)」)){str = str.replaceFirst(「\\(。+?\\)」,「」); } System.out.println(「\」「+ str +」\「」);'並且得到了預期的'「Hi($/lb)」「Hi」'。 – Luke
您可以使用'java.util.regex.Matcher'中的'find()'方法來查找非詳盡的匹配,但您確實不需要。 'replaceFirst()'和'replaceAll()'處理所有搜索以及替換。如果他們沒有找到任何匹配,他們將不變地返回原始字符串。 –