JavaScript与Java中String类的split方法的区别
笔者在学习js的时候,发现js中有很多类的方法和java中的方法作用一样,然后就犯了想当然的错误,在使用js中的某些方法的时候当成了java来使用;
有一次在js中切割字符串的时候,怎么切都得不到自己想要的结果,想了好久一直都想不明白,然后在java中测试了一下相同的操作却得到了想要的结果,这时我意识到是不是split方法在js和java中存在着一些细微的区别,随即查阅资料并实验多次发现,它们之间确实存在着一些细微的区别,下面就举例说明一下它们的区别。
js中切割字符串的split方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
如:
<script type="text/javascript">
var str = ",,a,b,c,,";
var strArr = str.split(",");
for(var i=0;i<strArr.length;i++){
document.write("strArr["+i+"]="+strArr[i]+"<br/>");
}
</script>
页面显示结果:
strArr[0]=
strArr[1]=
strArr[2]=a
strArr[3]=b
strArr[4]=c
strArr[5]=
strArr[6]=
可以看到,js中的split方法就是根据给定的字符串或者正则表达式进行单纯的切割,然后把每一个切割后的字符串放进字符串数组中,不管结尾是不是空字符串,都放进字符串数组中。
java中切割字符串的split方法
public String[] split(String regex):根据给定的字符串或正则表达式的匹配拆分此字符串。所得数组中不包括结尾空字符串。
如:
public static void main(String[] args) {
String str=",,a,b,c,,";
String[] strArr=str.split(",");//使用逗号切割字符串
for (int i = 0; i < strArr.length; i++) {
System.out.println("strArr["+i+"]="+strArr[i]);
}
}
控制台输出结果:
strArr[0]=
strArr[1]=
strArr[2]=a
strArr[3]=b
strArr[4]=c
可以看到,结尾的空字符串被舍弃了,最终的字符串数组结尾并没有空字符串元素。