使用String.split()所遇到的问题~~迷惑

昨天遇到了一个问题,从前台传来一个字符串,在后台需要split进行拆分,发现结果出乎我的意料,问题如下:
从前台传来的字符串是:a|b|c|d|,需要使用split以|来进行拆分,代码如下:

public static void main(String[] args) {
		String str1 = "a|b|c|d|";
		String[] arr1 = str1.split("|");
		System.out.println("数组arr1的大小是:"+arr1.length);
		for (int i = 0; i < arr1.length; i++) {
			System.out.println("----arr1["+i+"]:"+arr1[i]);
		}

最后打印出来的结果不是我所预期的:
数组arr1的大小是:9
----arr1[0]:
----arr1[1]:a
----arr1[2]:|
----arr1[3]:b
----arr1[4]:|
----arr1[5]:c
----arr1[6]:|
----arr1[7]:d
----arr1[8]:|

数组的大小本来预期的是:4,现在怎么打印出来的是:9
不知道问题出在那里了,最后将前台传来的字符串不使用"|",使用":"来把它们隔开,问题解决了。
将字符串换成:"a:b:c:d:"后的代码:
public static void main(String[] args) {
       String str2 = "a:b:c:d:";
       String[] arr2 = str2.split(":");
       System.out.println("数组arr2的大小是:"+arr2.length);
       for (int i = 0; i < arr2.length; i++) {
	  System.out.println("----arr2["+i+"]:"+arr2[i]);
       }
 }

打印出来的结果,遇到预期的是一致的:
数组arr2的大小是:4
----arr2[0]:a
----arr2[1]:b
----arr2[2]:c
----arr2[3]:d

难道使用"|"和":",对于split来说会有不同对待,迷惑,期待高手的指点~~~

你可能感兴趣的:(jdk,C++,c,正则表达式,C#)