java string的某个字符_JAVA中的String某个字符替换

因为replace方法内部是使用正则表达式的

lz可以看看下面这段代码public Matcher appendReplacement(StringBuffer sb, String replacement) {

// If no match, return error

if (first < 0)

throw new IllegalStateException("No match available");

// Process substitution string to replace group references with groups

int cursor = 0;

String s = replacement;

StringBuffer result = new StringBuffer();

while (cursor < replacement.length()) {

char nextChar = replacement.charAt(cursor);

if (nextChar == '\\') {

cursor++;

nextChar = replacement.charAt(cursor);

result.append(nextChar);

cursor++;

} else if (nextChar == '$') {

// Skip past $

cursor++;

// The first number is always a group

int refNum = (int)replacement.charAt(cursor) - '0';

if ((refNum < 0)||(refNum > 9))

throw new IllegalArgumentException(

"Illegal group reference");

cursor++;

// Capture the largest legal group string

boolean done = false;

while (!done) {

if (cursor >= replacement.length()) {

break;

}

int nextDigit = replacement.charAt(cursor) - '0';

if ((nextDigit < 0)||(nextDigit > 9)) { // not a number

break;

}

int newRefNum = (refNum * 10) + nextDigit;

if (groupCount() < newRefNum) {

done = true;

} else {

refNum = newRefNum;

cursor++;

}

}

// Append group

if (group(refNum) != null)

result.append(group(refNum));

} else {

result.append(nextChar);

cursor++;

}

}

// Append the intervening text

sb.append(getSubSequence(lastAppendPosition, first));

// Append the match substitution

sb.append(result.toString());

lastAppendPosition = last;

return this;

}

注意 if (nextChar == '\\')

你该知道了吧~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值