【发布时间】:2011-04-06 13:41:32
【问题描述】:
我正在读取 Java 中的 csv 文件,并且根据给定行上字符串的格式,我必须对它做一些不同的事情。 csv 文件中包含的三种不同格式是(使用随机数):
833 “79、869” "56-57, 568"
如果它只是一个数字(833),我想将它添加到我的 ArrayList 中。如果它是用逗号分隔并用引号括起来的两个数字 ("79, 869)",我想解析出两个数字中的第一个 (79) 并将其添加到 ArrayList。如果是用引号括起来的三个数字(前两个数字用破折号隔开,第三个用逗号分隔 ["56-57, 568"],那么我想解析出第三个数字 (568) 并添加它到 ArrayList。
我无法使用 str.contains() 来确定给定行上的字符串是否包含破折号。谁能给我一些帮助?这是我目前所拥有的:
private static void getFile(String filePath) throws java.io.IOException {
BufferedReader reader = new BufferedReader(new FileReader(filePath));
String str;
while ((str = reader.readLine()) != null) {
if(str.endsWith("\"")){
if (str.contains(charDash)){
System.out.println(str);
}
}
}
}
谢谢!
【问题讨论】:
-
你是如何定义 charDash 的?并且每一行上是否只有一个逗号分隔值(即,如果该行上还有其他值,则可能不会发现该行以引号结尾)。
-
这是您的 CSV 文件中的一行吗? 833 "79, 869" "56-57, 568"
-
为什么没有人推荐正则表达式?