Java 中replaceAll如何忽略大小写呢?
方式一:在正则表达式前面添加(?i)
@Test
public void test_replaceAll1() {
String input = "I like Java,jAva is very easy and jaVa is so popular.";
String replacement = "cccc";
System.out.println(input);
System.out.println(input.replaceAll("(?i)java", replacement));
}
输出结果:
I like Java,jAva is very easy and jaVa is so popular.
I like cccc,cccc is very easy and cccc is so popular.
方式二:使用Matcher 的appendReplacement 方法
@Test
public void test_replaceAll2() {
String input = "I like Java,jAva is very easy and jaVa is so popular.";
String regex = "java";
String replacement = "cccc";
StringBuffer sb = replaceAll2(input, regex, replacement);
System.out.println(input);
System.out.println(sb);
}
/***
* replaceAll,忽略大小写
*
* @param input
* @param regex
* @param replacement
* @return
*/
public StringBuffer replaceAll2(String input, String regex,
String replacement) {
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(input);
StringBuffer sb = new StringBuffer();
boolean result = m.find();
while (result) {
m.appendReplacement(sb, replacement);
result = m.find();
}
m.appendTail(sb);
return sb;
}
输出结果:
I like Java,jAva is very easy and jaVa is so popular.
I like cccc,cccc is very easy and cccc is so popular.
方式三:使用Matcher 的replaceAll
/***
* replaceAll,忽略大小写
*
* @param input
* @param regex
* @param replacement
* @return
*/
public String replaceAll3(String input, String regex, String replacement) {
Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(input);
String result = m.replaceAll(replacement);
return result;
}
@Test
public void test_replaceAll3() {
String input = "I like Java,jAva is very easy and jaVa is so popular.";
String regex = "java";
String replacement = "cccc";
String sb = replaceAll3(input, regex, replacement);
System.out.println(input);
System.out.println(sb);
}
输出结果:
I like Java,jAva is very easy and jaVa is so popular.
I like cccc,cccc is very easy and cccc is so popular.
参考:
http://hw1287789687.iteye.com/blog/2150897