如何使用分隔符'|'拆分字符串

时间:2012-07-11 20:16:41

标签: java regex

  

可能重复:
  Java split() method strips empty strings at the end?

我们有一个要求,比如读取文件内容并将数据上传到数据库。文件内容将由分隔符“|”分隔像这样

4000|name|state|city|zip||country|||address||

对于在“|”之间没有数据的某个列,我也可以有空值。例如'||'拉链和国家之间。我的问题是string.split(“//”,“|”)在空值之间取代,并将空值作为元素返回数组。但尾随'||'在地址未被考虑之后。正如上面的例子中所使用的,当我使用string.split(“//”,“|”)时,我得到一个数组大小为11的字符串数组元素,但我得到的只是10.最后一个null没有被检索。任何人都可以帮忙解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

只需使用String类中的常规split(String, int)方法:

String line = "4000|name|state|city|zip||country|||address||";
String data[] = line.split("\\|", -1); // escaped, because of regular expressions

减号是一种约定,表示该字符串将根据需要进行拆分。

答案 1 :(得分:0)

是的,使用拆分很明显,但你也可以考虑这个选项:

为什么不使用string.indexOf(“|”,indexToStartFrom)?有点麻烦,但确实无需考虑正则表达式。


或者有OpenCsv http://opencsv.sourceforge.net/库,它是商业友好的。 Apache 2.0许可证