繁体   English   中英

有关在Java中split()用法的问题

[英]question regarding the usage of split() in java

我正在尝试从.txt文件中拆分()行文本和数字。 我需要隔离行的不同部分,以便可以将其插入数据库表中。 这是示例行:

051500000711000,051500000711000,equal;

我已经有这行的工作代码了:

String delimiter = (",|;");
temp = strLine.split(delimiter);

但有时示例行会像这样:

052000000711000,,,

看到缺失的值了吗? 因为生成该行的另一个程序具有空值,所以它们不存在。 这就是为什么它只返回逗号的原因。

问题是我应该如何使用定界符,以便它可以读取逗号并将其作为空返回到我的split()数组中。

问题不是分隔符正则表达式。 使用String.split(regex, limit) ,限制为-1。 默认限制为零,它会修剪分隔符返回的String数组中的尾随null。

请阅读链接的Javadoc以获取详细信息。

查看Apache Commons 2.5 StringUtils的splitPreserveAllTokens

不要使用它。 获取番石榴并使用Splitter.on(separator).split(string)可以很好地解决此问题和其他问题。

我想你想要这个正则表达式:

String delimiter = ",";

像这样使用:

temp = strLine.replace(";", "").split(delimiter);

实际上,这种方式应该已经可以完成很多工作。

如果列表中的中间值为“ null” ...,那么您将得到一个空字符串...您可以将其简单地视为“ null”。

这是一个例子:

导入java.io. *;

class X
{
  public static void main (String[] args) throws IOException
  {
    // Prompt user to enter something
    String delimiter = ",|;";
    String sLine = "051500000711000,,051500000711000,A,,";
    String[] sOut = sLine.split (delimiter);
    for (int i=0; i < sOut.length; i++)
     System.out.println ("sOut[]=" + sOut[i]);
  }
}

> sOut[]=051500000711000 
> sOut[]= 
> sOut[]=051500000711000 
> sOut[]=A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM