[英]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.