使用制表符分隔符拆分行的问题

时间:2015-04-05 07:57:07

标签: java bufferedreader

我正在读取以下格式的文件输入:

a b c d e 

其中字母表各自代表一个字符串,并由tab字符分隔。我正在使用缓冲读取器读取该行并使用以下命令将其拆分:

String[] splitString= currentLine.split("\t");

其中currentLine是一个字符串,其中包含bufferedreader读取的行。

但是,输入中可能存在某些实例,其中b可能为空或e可能为空(请参阅上面的示例输入)。

我希望能够为每个实例执行不同的操作,如下所示:

if (b is blank){
do this
}else if (e is blank) {
do this
}else{
do this
}

但是,我无法想出一个能够准确实现此功能的合适if条件

欢迎任何建议

编辑:

这是输入的正常形式,只要没有“空白”

a[tab]b[tab]c[tab]d[tab]e

让我们说,b位置的任何内容现在都是空白的,输入看起来像这样:

a[tab][tab]c[tab]d[tab]e

2 个答案:

答案 0 :(得分:1)

您可以尝试:

String[] splitString = currentLine.split("\\s");

正则表达式\\s匹配单个空白字符。

空白字符由[ \t\n\x0B\f\r]组成。

答案 1 :(得分:1)

根据标签进行拆分(使用\\t - 仅表示要拆分的标签)。空字符串表示您连续有两个选项卡。

string.split("\\t");

示例:

String str = "hello[tab]hi[tab]how are you?"
String[] arr = str.split("\\t");

将生成一个大小为3的数组,其元素为:hello, hi, how are you?

但是,对于String str = "hello[tab][tab]hi[tab][tab][tab]how are you?",结果将是一个大小为6的数组,其元素为hello, , hi, , , how are you?"

只需检查“空字符串”的位置,他们就会告诉你哪些地方缺少。