我正在完成一项要求我阅读句子文本文件的作业。在此之后,我尝试使用指定的分隔符来限制进入的内容并将其放入数组中。
scannerInput.useDelimiter("\\p{Punct}|\\p{Digit}|\\p{javaWhitespace}");
我的问题是,当我读入文本文件并将单词放入数组时,数组中的索引之间似乎存在空白。
例如,数组的输出如下所示:
array[0] =
array[1] = tony
array[2] =
array[3] = sue
我假设我的分隔符列表中有一些格式字符或其他我遗漏的字符。我想知道我缺少什么来删除所有额外的空格,以便我可以只有数组中的单词。截至目前,我的前30个索引基本上是空白的。
或者,如果有一种简单的方法可以找出真正背后的空白。我认为它不仅仅是空的。谢谢你的帮助。
答案 0 :(得分:0)
您的分隔符是单个字符,您可能需要指定多个字符:
scannerInput.useDelimiter("\\p{Punct}+|\\p{Digit}+|\\p{javaWhitespace}+")
并且,如果每个(不是只空白或只是数字)之间可能有多个类型分隔符,则将其更改为正如@David Ehrmann所建议的正则表达式。
答案 1 :(得分:0)
尝试:
scannerInput.useDelimiter("[\\p{Punct}\\p{Digit}\\p{javaWhitespace}]+")
它会吞噬连续的分隔符。我也从交替换成了一个字符类,因为你只匹配单个字符\p{Punct}
本身就是一个字符类,它们的匹配速度比交替的组快。