替换字符串大家都用的很熟悉了,但是估计日常很少用到替换时忽略大小写,今天问了身边几个工作超10年的java程序员,竟然大家都不知道怎么写了,这种基础代码竟然都淡忘了。正好学习整理一下,在这里也分享备忘一下。
第一种方法:直接用replaceAll
使用字符串的replaceAll方法,使用(?i)匹配符。
例如: (?i)abc ,替换abc任何忽略大小写内容。
A(?i)bc,替换 A+(忽略大小写的bc)。
代码示例如下:System.out.println("hongxuejingsCriptcom".replaceAll("(?i)script",""));
System.out.println("hongxuejingSCriptcom".replaceAll("s(?i)cript",""));
输入结果如下图:
第二种方法:使用正则表达式的Matcher 的appendReplacement/***
* replaceAll,忽略大小写
* @param input
* @param regex
* @param replacement
* @return
*/
public StringBuffer replaceAllIgnoreCase(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;
}
这个是使用正则表达式重新实现了replaceAll方法。
方法三:使用正则表达式Matcher 的replaceAll/***
* replaceAllIgnoreCase,忽略大小写
*
* @param input
* @param regex
* @param replacement
* @return
*/
public String replaceAllIgnoreCase(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;
}