我有什么方法可以在java中执行以下操作吗?
String s = "acdaaefacaa";
String b = s.replaceLikeMethod("a", "");
和b成为" cdaaefcaa"。基本上将第一个字符串"a"
的任何匹配项替换为另一个""
,除非"a"
连续出现两次或更多次。
答案 0 :(得分:3)
您可以使用正则表达式来实现此目的。你想要的功能是
(?<!foo)
匹配模式,除非foo
发生在此之前。(?!foo)
匹配模式,除非事后发生foo
你基本上需要同时使用两个与字符串相同的字符串来匹配和模式。 E.g。
String pattern = "(?<!foo)foo(?!foo)";
或者使用"a"
String pattern = "(?<!foo)foo(?!foo)".replace("foo", "a");
最后,要替换只做:
String b = s.replaceAll(pattern, "");
答案 1 :(得分:1)
使用此正则表达式:((?<!a)a(?!a))
。它使用负前瞻和后视。它匹配前面和后面跟着另一个a
的每个a
。
测试:
String input = "acdaaefacaa";
String output = input.replaceAll("((?<!a)a(?!a))", "");
System.out.println(output);
输出:
cdaaefcaa