我有一些用逗号分隔的记录。我需要分离文件中的记录,并将其放入一个数组中。我遇到的问题是文本是用逗号分隔的,但在一些字段中有逗号,这些逗号不应该是分隔符。
例如,当一个字段指定一个地址时,如下例所示:"2, foo , 403 HAPPY LANE Seattle, WA., etc"
下面是我使用的代码示例:
// Start streams....
String str = null;
List<String> items = null;
while((str = bufr.readLine()) != null) {
items = Arrays.asList(str.replace("\"", "").split("\\s*,\\s*"));
while(true) {
System.out.println (items);我知道csv之类的东西,但我还是不想用它。
发布于 2012-11-14 01:46:51
如果您需要忽略的逗号包含在引号中,那么您可以使用诸如OpenCSV之类的包。它将负责忽略引用的comas。Apache Commons还列出了一些其他的here。
但是,如果没有引用coma,您就无法期望计算机知道一个coma是分隔符,而另一个不是分隔符。
发布于 2012-11-14 01:55:18
这真的取决于你的情况,但我可以想到几种可能的方法来做到这一点。
A)在逗号分隔中寻找模式。即。你有一个数据库,你可以从中读取值。您正在查看的表是一个包含姓氏、名字和地址的customer表。如果address中有一个您不想拆分的额外逗号,您可以编写某种方法来忽略每隔三个逗号。
B)将您想要分隔值的所有逗号替换为数据中不会出现在其他位置的另一个特殊字符,并根据该字符而不是逗号拆分数据。
正如我所说的,这真的取决于您的情况,以及您正在读取的数据。也许如果你在问题的上下文中提供更多的信息,你可以得到一个更精致的答案。
https://stackoverflow.com/questions/13365846
复制相似问题