我正在尝试从.txt文件中拆分()一行文本和数字。我需要隔离该行的不同部分,以便我可以将其插入数据库表中。这是一个示例行:
051500000711000,051500000711000,equal;
我已经有了这一行的工作代码:
String delimiter = (",|;");
temp = strLine.split(delimiter);
但有时候样本行会是这样的:
052000000711000,,,
查看缺失值?它们丢失了,因为生成此行的其他程序具有空值;这就是它只返回逗号的原因。
问题是我应该如何处理我的分隔符 读取逗号并将其作为null返回到我的split()数组中。
答案 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