我们有一个要求,比如读取文件内容并将数据上传到数据库。文件内容将由分隔符“|”分隔像这样
4000|name|state|city|zip||country|||address||
对于在“|”之间没有数据的某个列,我也可以有空值。例如'||'拉链和国家之间。我的问题是string.split(“//”,“|”)在空值之间取代,并将空值作为元素返回数组。但尾随'||'在地址未被考虑之后。正如上面的例子中所使用的,当我使用string.split(“//”,“|”)时,我得到一个数组大小为11的字符串数组元素,但我得到的只是10.最后一个null没有被检索。任何人都可以帮忙解决这个问题吗?
答案 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许可证