JS split使用

最近一直在实现新需求,其中碰到一个小问题,关于JS split的使用和Java中字符串的split使用没区分开,导致一个bug。

在Java中如果分割符是正则表达式中的符号,那么以这个字符作分割时,需要添加转义,比如如果字符串以|分割,那么正确的写法是str.split("\|");

正确示例:

    String str = "a|b|c";
    String[] result = str.split("\\|");
    for(int index=0; index<result.length; index++) {
        System.out.println(result[index]);
    }
    
    结果:
    a
	b
	c

结果在JS中我也想当然这样认为,结果出错了,这里总结下js中split的用法,关于JAVA中split部分可以查看这里

JS中split方法

定义和用法
split() 方法用于把一个字符串分割成字符串数组。

语法

stringObject.split(separator,howmany)

separator 必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany 可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

返回值
一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。

但是,如果 separator 是包含子表达式的正则表达式,那么返回的数组中包括与这些子表达式匹配的字串(但不包括与整个正则表达式匹配的文本)。

var str="aa bb cc dd ee"

document.write(str.split(" ") )
document.write(str.split("") )
document.write(str.split(" ",3))

结果:
aa,bb,cc,dd,ee
a,a, ,b,b, ,c,c, ,d,d, ,e,e
aa,bb,cc

js中split切割分为两种,字符串切割正则表达式切割

字符串切割:

  1. 字符串切割将以字符串切割,返回以字符串分割的数组,数组中不包括切割的字符串
  2. 字符串切割如果切割的字符串为空串,那么会将每个字符切割

正则表达式切割:

  1. 正则表达式切割写法和字符串切割不一样,split中写的正则表达式,与Java不同,这个正则表达式不是字符串形式,而是如str.split(/s+/);

  2. 正则表达式语法为

    /正则表达式主体/修饰符(可选)
    更详细的可以参见这里

猜你喜欢

转载自blog.csdn.net/qq_36101933/article/details/84316140