java的字符要求_Java 字符串需注意的点

"本文探讨了Java中String的replace方法与split方法的使用。replace方法不会修改原字符串,而是返回新字符串。split方法在处理正则表达式时需要注意特殊字符的转义。在给定的例子中,split方法由于未正确转义"|", 导致结果错误。"
摘要由CSDN通过智能技术生成

问:下面代码的输出是什么?

String name = "abcabc";

name.replace("b", "a");

System.out.println(name);

答:输出结果是

abcabc

因为 String 的 replace 方法是新创建字符串的替换,具体参见如下源码:

public String replace(CharSequence target, CharSequence replacement) {

//两个参数都不能为空

if (target == null) {

throw new NullPointerException("target == null");

}

if (replacement == null) {

throw new NullPointerException("replacement == null");

}

//替换和被替换的字符串

String replacementStr = replacement.toString();

String targetStr = target.toString();

......

// This is the "regular" case.

int lastMatch = 0;

StringBuilder sb = null;

for (;;) {

int currentMatch = indexOf(this, targetStr, lastMatch);

if (currentMatch == -1) {

break;

}

//新建

if (sb == null) {

sb = new StringBuilder(len);

}

sb.append(this, lastMatch, currentMatch);

sb.append(replacementStr);

lastMatch = currentMatch + targetStr.length();

}

if (sb != null) {

//返回替换后的新字符串

sb.append(this, lastMatch, len);

return sb.toString();

} else {

return this;

}

}

问:下面代码的输出是什么?

String names = "a|b|c";

String[] ret1 = names.split("|");

System.out.println(ret1.length);

答:输出结果是 5。

因为 split 方法接收的参数是一个正则表达式字符串,而 | 在正则表达式里是个特殊字符,具备特殊的意义,或者表示正则匹配中的或,比如 ",|;" 正则用来匹配 , 或 ;,"|" 等同于 "",这里要想正确 split 需要写为 "\\|" 或 "[|]" 即可。

特别注意,split(reg) 方法是根据匹配给定的正则表达式来拆分字符串,reg 取值特别注意 . 、 | 和 * 等转义字符的问题,遇到这些正则表达式转义字符务必添加 \\ 转义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值