- 例子:原始字符串:String demo = “aback::!”;
文章目录
- 一、replace:字符或者字符串替换
- 1、使用方法
- 2、源码
- 二、replaceAll:多个正则替换
- 1、使用方法
- 2、源码
- 三、replaceFirst:首次出现替换
- 1、使用方法
- 2、源码
一、replace:字符或者字符串替换
使用String的replace方法进行字符或者字符串替换
1、使用方法
String replace = demo.replace("::", "-");
System.out.println(demo + " after replace " + replace);
输出 :aback::! after replace aback-!
2、源码
- 可以看出参数为字符序列或者可以说成是字符串,和将要替换成的字符串
public String replace(char oldChar, char newChar) {
if (oldChar != newChar) {
int len = value.length;
int i = -1;
char[] val = value; /* avoid getfield opcode */
while (++i < len) {
if (val[i] == oldChar) {
break;
}
}
if (i < len) {
char buf[] = new char[len];
for (int j = 0; j < i; j++) {
buf[j] = val[j];
}
while (i < len) {
char c = val[i];
buf[i] = (c == oldChar) ? newChar : c;
i++;
}
return new String(buf, true);
}
}
return this;
}
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
}
二、replaceAll:多个正则替换
使用String的replaceAll方法进行正则替换
1、使用方法
String replaceAll = demo.replaceAll("[a=,:@]", "-");
System.out.println(demo + " after replaceAll " + replaceAll);
输出:aback::! after replaceAll -b-ck–!
2、源码
- 参数为应用的正则和将要替换成的字符串
public String replaceAll(String regex, String replacement) {
return Pattern.compile(regex).matcher(this).replaceAll(replacement);
}
三、replaceFirst:首次出现替换
使用String的replaceFirst方法进行正则替换
1、使用方法
String replaceFirst = demo.replaceFirst("a", "-");
System.out.println(demo + " after replaceFirst " + replaceFirst);
输出:aback::! after replaceFirst -back::!
2、源码
- 参数为应用的正则和将要替换成的字符串
- 只替换第一次匹配到的内容
public String replaceFirst(String regex, String replacement) {
return Pattern.compile(regex).matcher(this).replaceFirst(replacement);
}
- 类:Matcher
- 找到处理就返回
public String replaceFirst(String replacement) {
if (replacement == null)
throw new NullPointerException("replacement");
reset();
if (!find())
return text.toString();
StringBuffer sb = new StringBuffer();
appendReplacement(sb, replacement);
appendTail(sb);
return sb.toString();
}