如果字符串在Java中结尾则删除

时间:2018-12-20 12:52:13

标签: java regex

如果以给定字符串结尾的“或”,我必须删除。

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()。 两者之间有什么区别?如果以结尾结尾,删除字符串的最佳方法是什么?

2 个答案:

答案 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");