Java 使用制表符分隔符拆分行时出现问题

Java 使用制表符分隔符拆分行时出现问题,java,bufferedreader,Java,Bufferedreader,我正在从以下格式的文件中读取输入: a b c d e 其中每个字母表示一个字符串,并由选项卡字符分隔。我正在使用bufferedreader读取该行,并使用以下命令将其拆分: String[] splitString= currentLine.split("\t"); 其中currentLine是一个字符串,其中包含bufferedreader读取的行 但是,输入中可能存在某些情况,b可能为空或e可能为空(请参阅上面的输入示例) 我希望能够对每个实例执行不同的操作,如下所示: if (b

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

a b c d e 
其中每个字母表示一个字符串,并由
选项卡
字符分隔。我正在使用bufferedreader读取该行,并使用以下命令将其拆分:

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
}
然而,我不能想出一个合适的如果条件,将准确地实现这一功能

欢迎提出任何建议

编辑:

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

假设
b
位置的任何内容现在为空,输入如下:

a[tab][tab]c[tab]d[tab]e
您可以尝试以下方法:

String[] splitString = currentLine.split("\\s");
正则表达式
\\s
匹配单个空白字符

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

组成,您可以尝试使用:

String[] splitString = currentLine.split("\\s");
正则表达式
\\s
匹配单个空白字符

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

按制表符拆分组成(使用
\\t
-仅表示要拆分的制表符)。空字符串将指示您在一行中有两个选项卡

string.split("\\t");
例如:

String str = "hello[tab]hi[tab]how are you?"
String[] arr = str.split("\\t");
将生成一个大小为3的数组,其中包含以下元素:
hello,hi,你好吗?

但是,对于
String str=“hello[tab][tab]hi[tab][tab][tab]你好吗?”
,结果将是一个大小为6的数组,其中包含元素
hello,hi,,你好吗?”

只需检查“空字符串”的位置,它们就会告诉您在哪里缺少了什么。

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

string.split("\\t");
例如:

String str = "hello[tab]hi[tab]how are you?"
String[] arr = str.split("\\t");
将生成一个大小为3的数组,其中包含以下元素:
hello,hi,你好吗?

但是,对于
String str=“hello[tab][tab]hi[tab][tab][tab]你好吗?”
,结果将是一个大小为6的数组,其中包含元素
hello,hi,,你好吗?”



只需检查“空字符串”的位置,它们就会告诉您哪里缺少了什么。

哦,好的,我理解这一点,但我希望能够区分这两种情况。如果<代码> b>代码>是空白的,那么我想做一些事情,当代码< E >代码>空白时,它会被存储在与SimultStudio数组中的空格对应的元素中?如果我的输入是“代码> C D E < /代码>,那么SPLITSITY数组将根据上面的代码包含什么?哦,好的,我理解这一点,但我希望能够区分这两种情况。如果<代码> b>代码>是空白的,那么我想做什么,当代码< E >代码>空白时,它会被存储在与SimultStudio数组中的空白区对应的元素中?如果我的输入是“代码> C D E < /代码>,那么根据上面的代码,SPLITSITH数组包含什么?这意味着B可以是空的吗?您是以
abcde
(无空格)的形式读取输入,然后当b为空时,您读取的是
acde
,还是用空格读取,然后当您读取
a c d e
时,b为空?在你的问题中“空白”是什么意思?如果你有
xyz
,你怎么知道
b
e
是空白的,或者
a
d
是等?有很多可能性,我编辑了这篇文章,以便更好地解释@OriLentz@fge什么意思?我的编辑回答了你的问题吗?好的,我现在明白了。我已经在下面回答了。我希望这会有帮助。b可以是空白是什么意思?您是以
abcde
(无空格)的形式读取输入,然后当b为空时,您读取的是
acde
,还是用空格读取,然后当您读取
a c d e
时,b为空?在你的问题中“空白”是什么意思?如果你有
xyz
,你怎么知道
b
e
是空白的,或者
a
d
是等?有很多可能性,我编辑了这篇文章,以便更好地解释@OriLentz@fge什么意思?我的编辑回答了你的问题吗?好的,我现在明白了。我已经在下面回答了。我希望这会有所帮助。您确定生成的数组大小为6吗?因为我很确定我尝试了类似的方法,但结果没有起作用,更不用说我只是检查了,这一切都很好,但是,要检查空字符串,您只需要检查空字符吗?只需检查空字符或更首选的字符。isEmpty()您确定生成的数组大小为6吗?因为我很确定我尝试过类似的方法,但结果不起作用。不要紧,我只是检查了一下,这很好,但是,要检查空字符串,你只需要检查空字符吗?只需检查空字符或更喜欢的字符。isEmpty()