我有一个csv文件,包含一行;
2013-05-25 23:59:59,"-126125372","299134596","-1272989684","1826558680","-441013765","-441013765"
每当令牌遇到空格时(例如:"2013-05-25 23:59:59")就会抛出一个错误。我使用StringTokenizer
你知道这是怎么回事吗?
Btw这是我的代码;
Scanner x = new Scanner(new FileReader("c:\test.csv"));
StringTokenizer token = new StringTokenizer(x.next());
while (token.hasMoreElements())
{
System.out.println(token.nextElement());
}
假设您的CSV包含以下行:
2013-05-25 23:59:59,"-126125372","299134596","-1272989684","1826558680","-441013765","-441013765"
你刚刚发布的代码
Scanner x = new Scanner(new FileReader("c:\test.csv"));
StringTokenizer token = new StringTokenizer(x.next());
将只捕获'2013-05-25
作为具有x.next()
的字符串,参见Scanner#next()
的javadoc。从javadoc,
Scanner使用分隔符模式将其输入分解为多个令牌,默认情况下匹配空格
因此next()
将所有内容作为字符串返回到下一个空格。使用nextLine()
代替,返回整行。
StringTokenizer token = new StringTokenizer(x.nextLine());
我假设x是一个Iterator。其next()方法抛出该异常。如果您坚持使用StringTokenizer遗留类,那么使用x.hasNext()方法检查是否有更多的元素。
使用
String str = "2013-05-25 23:59:59,'-126125372','299134596','-1272989684','1826558680','-441013765','-441013765'";
StringTokenizer st = new StringTokenizer(str);
System.out.println("---- Split by space ------");
while (st.hasMoreElements()) {
System.out.println(st.nextElement());
}
你有无效字符(")2013-05-25 23:59:59",'后59。修改或跳过