如果以给定字符串结尾的“或”,我必须删除。
public class StringReplaceTest {
public static void main(String[] args) {
String text = "SELECT count OR %' OR";
System.out.println("matches:" + text.matches("OR$"));
Pattern pattern = Pattern.compile("OR$");
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
System.out.println("Found match at: " + matcher.start() + " to " + matcher.end());
System.out.println("substring:" + text.substring(matcher.start(), matcher.end()));
text = text.replace(text.substring(matcher.start(), matcher.end()), "");
System.out.println("after replace:" + text);
}
}
}
输出:
matches:false
Found match at: 19 to 21
substring:OR
after replace:SELECT count %'
它删除了所有出现的字符串“ OR”,但如果仅以“。”结尾,则必须删除。 该怎么做?
正则表达式也适用于Pattern,但不适用于String.matches()。 两者之间有什么区别?如果以结尾结尾,删除字符串的最佳方法是什么?
答案 0 :(得分:4)
text.matches(".*OR$")
,因为匹配项遍及整个字符串。
或者:
if (text.endsWith("OR"))
或者:
text = text.replaceFirst(" OR$", "");
答案 1 :(得分:2)
如果您只需要删除最后一个OR,那么我建议使用substring
方法,因为它比完整的正则表达式模式要快。在这种情况下,您可以使用以下代码删除“或”:
text.substring(0, text.lastIndexOf("OR"));
如果您需要用其他方式替换OR,则需要使用此代码来检测最后的OR,并在字符串中使用分隔符。
text.replaceFirst("\\bOR$", "SOME");