关于在java中使用split()的问题

时间:2011-08-01 03:38:25

标签: java split delimiter

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

051500000711000,051500000711000,equal;

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

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

但有时候样本行会是这样的:

052000000711000,,,

查看缺失值?它们丢失了,因为生成此行的其他程序具有空值;这就是它只返回逗号的原因。

问题是我应该如何处理我的分隔符 读取逗号并将其作为null返回到我的split()数组中。

5 个答案:

答案 0 :(得分:8)

问题不在于分隔符正则表达式。使用String.split(regex, limit),限制为-1。默认限制为零,它修剪了拆分器返回的String数组的尾随空值。

阅读链接的javadoc以获取血腥细节。

答案 1 :(得分:1)

查看Apache Commons 2.5 StringUtils'splitPreserveAllTokens

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

String delimiter = ",";

像这样使用:

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

答案 4 :(得分:-1)

实际上,它应该已经非常有用了。

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

以下是一个例子:

import 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