我编程在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()'处理所有搜索以及替换。如果他们没有找到任何匹配,他们将不变地返回原始字符串。 –