Java 如何使用分隔符分割字符串'|';

Java 如何使用分隔符分割字符串'|';,java,regex,Java,Regex,可能重复: 我们需要读取文件内容并将数据上传到数据库。文件内容将由分隔符“|”分隔,如下所示 4000|name|state|city|zip||country|||address|| 对于在“|”之间没有数据的特定列,我也可以使用空值。例如,zip和country之间的“| |”。我的问题是字符串。split(“//”,“|”)将空值作为元素,在空值和返回数组之间插入。但地址后的尾随“| |”不在考虑之列。正如在上面的示例中所使用的,当我使用string.split(“/”,“|”)时,我

可能重复:

我们需要读取文件内容并将数据上传到数据库。文件内容将由分隔符“|”分隔,如下所示

4000|name|state|city|zip||country|||address||
对于在“|”之间没有数据的特定列,我也可以使用空值。例如,zip和country之间的“| |”。我的问题是字符串。split(“//”,“|”)将空值作为元素,在空值和返回数组之间插入。但地址后的尾随“| |”不在考虑之列。正如在上面的示例中所使用的,当我使用string.split(“/”,“|”)时,我会得到一个数组大小为11的字符串数组元素,但我只得到10。最后一个空值不会被检索。有人可以帮助解决这个问题吗?

只需使用
字符串中的常规方法
类:

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

减一是一种惯例,它指示字符串将按照你想要的方式分裂。

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

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



或者有一个OpenCsv库,它是商业友好的。Apache2.0许可证

来自@wrschneider99的链接:
String[]de=data.split(“|”,-1)无需使用indexOf,因为split已经内置了所需的功能。你所要做的就是阅读文档或在本网站上搜索相同的问题(参见评论)。谢谢。。它确实有效。@user1470589:因为这个答案对你有帮助,你可以通过点击这个答案分数下面的勾号来接受它。