Java useDelimiter问题

时间:2014-02-22 01:14:36

标签: java regex arrays

我正在完成一项要求我阅读句子文本文件的作业。在此之后,我尝试使用指定的分隔符来限制进入的内容并将其放入数组中。

scannerInput.useDelimiter("\\p{Punct}|\\p{Digit}|\\p{javaWhitespace}");

我的问题是,当我读入文本文件并将单词放入数组时,数组中的索引之间似乎存在空白。

例如,数组的输出如下所示:

array[0] = 
array[1] = tony
array[2] =
array[3] = sue

我假设我的分隔符列表中有一些格式字符或其他我遗漏的字符。我想知道我缺少什么来删除所有额外的空格,以便我可以只有数组中的单词。截至目前,我的前30个索引基本上是空白的。

或者,如果有一种简单的方法可以找出真正背后的空白。我认为它不仅仅是空的。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您的分隔符是单个字符,您可能需要指定多个字符:

scannerInput.useDelimiter("\\p{Punct}+|\\p{Digit}+|\\p{javaWhitespace}+")

并且,如果每个(不是空白或只是数字)之间可能有多个类型分隔符,则将其更改为正如@David Ehrmann所建议的正则表达式。

答案 1 :(得分:0)

尝试:

scannerInput.useDelimiter("[\\p{Punct}\\p{Digit}\\p{javaWhitespace}]+")

它会吞噬连续的分隔符。我也从交替换成了一个字符类,因为你只匹配单个字符\p{Punct}本身就是一个字符类,它们的匹配速度比交替的组快。