2016-04-27 33 views
2

我有一个文本文件,其中包含大量的特殊字符,空白和数据的组合。 我将这个文件的内容存储到数组列表中,如果我不使用useDelimiter()函数,Java正在完美地读取我的文本。如何使用逗号和点作为定界符除了Java默认分隔符

唯一的问题是,它不接受逗号,)和.)作为分隔符。

我知道我可以使用input.useDelimiter(",|.| |\n")使用逗号空间作为分隔符和其他选项一样好,但后来我得到的结果如Java给了我现在是不正确的。

有没有一种方法来指导Java的使用逗号作为分隔符连同任何默认分隔符它使用?

在此先感谢您的帮助:)

问候, 拉胡尔

+0

如果你有一个逗号和/或点号它可能是最好只使用一个BufferedReader和'分裂(“[\\ \\秒。]” )'。或立即一些第三方CSVReader –

回答

0

为扫描仪的默认分隔符定义为模式\p{javaWhitespace}+,所以如果你也想治疗逗号和点作为分隔符,尽量

input.useDelimiter("(\\p{javaWhitespace}|\\.|,)+");

请注意,您需要转义点,因为这是正则表达式中的特殊字符。

+0

男人!我试图从2天左右的时间内实现这一点....不能得到比这更好的结果。完善。非常感谢:) – Rahul

+0

它给我的结果完全是我想要的:) – Rahul

0

你可以这样做:

String str = "..."; 
List<String> List = Arrays.asList(str.split(",")); 

基本上.split()方法将分裂根据字符串(在这种情况下)您传递的分隔符将返回一个字符串数组。

但是,您好像是在字符串列表之后而不是数组,因此必须使用Arrays.asList()实用程序将数组转换为列表。正如一个供参考,你也可以做类似这样:

String str = "..."; 
ArrayList<String> List = Arrays.asList(str.split(",")); 
0

使用转义字符是这样的:

input.useDelimiter("\\."); 
相关问题