【BUG玩一天系列】Java spilt方法需要注意的地方

先贴一下有问题的代码,看看坑具体在哪里。

public class TestSpilt {
	public static void main(String[] args) {
		String limiter = "$";
		String str = "a" + limiter + "b" + limiter + "c";
		String[] strs = str.split(limiter);
		for(int i=0; i<strs.length; i++){
			System.out.println(strs[i]);
		}
	}
}

看出来坑在哪里了吗

之前用spilt的方法,以为是根据指定的字符串进行拆分,所以随便定义了一个分割字符串。

实际上,在java API中,是这样定义的


public String[] split(String regex)

根据给定正则表达式的匹配拆分此字符串。

该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。

例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果:

Regex 结果

: { "boo", "and", "foo" }
o { "b", "", ":and:f" }


参数:
    regex - 定界正则表达式
返回:
字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的
抛出:
PatternSyntaxException - 如果正则表达式的语法无效


可以看出传入的参数是正则表达式而不是字符串

"+"、"?"、"\"、"*"、"^"、"."、"$"在正则表达式里都有特殊意义

所以最好不要用这些字符作为分隔符,或者在用的时候进行转义。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值