我有一个包含一行的csv文件;
'2013-05-25 23:59:59',' - 126125372','299134596',' - 1272989684','1826558680',' - 441013765',' - 441013765'
每次令牌遇到空格(例如“2013-05-25 23:59:59”)时,都会抛出错误。我正在使用StringTokenizer
知道这是怎么发生的吗?
这是我的代码;
Scanner x = new Scanner(new FileReader("c:\\test.csv"));
StringTokenizer token = new StringTokenizer(x.next());
while (token.hasMoreElements())
{
System.out.println(token.nextElement());
}
答案 0 :(得分:0)
我假设x是迭代器。其next()方法抛出该异常。 如果您坚持使用StringTokenizer遗留类,那么使用x.hasNext()方法检查实际上是否有更多元素。
答案 1 :(得分:0)
使用此
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后更改或跳过它
答案 2 :(得分:0)
假设您的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,
扫描仪使用分隔符模式将其输入分解为标记, 默认情况下匹配空格。
因此next()
会将所有内容作为字符串返回到下一个空格。请改用nextLine()
来返回整行。
StringTokenizer token = new StringTokenizer(x.nextLine());