2010-09-30 42 views
1

我有一个Java Scanner.useDelimiter()分隔“”的问题。Java Scanner.useDelimiter()问题与“”

我试图用扫描器读取一个CSV文件。该CSV有2列(名称,描述),并说明字段中有长段(与和。)

我想知道什么分隔符这个案例。

+1

描述是否可以包含换行符? – aioobe 2010-09-30 06:59:09

+0

可以在描述中有逗号吗? – 2010-09-30 07:24:03

+1

thegravytalker:是的,操作状态“描述字段有很长的段落(with,and。)” – aioobe 2010-09-30 07:26:29

回答

3

如何像

Scanner s = new Scanner("name1 lorem, some description\n" + 
         "name2 ipsum, some other, description \n" + 
         "name3 dolor, a third. description\n"); 

while (s.hasNextLine()) { 
    String[] cols = s.nextLine().split(",", 2); // limit to two columns. 
    System.out.println("col1: " + cols[0] + ", col2:" + cols[1]); 
} 

打印:

col1: name1 lorem, col2: some description 
col1: name2 ipsum, col2: some other, description 
col1: name3 dolor, col2: a third. description 

或者,如果你坚持使用扫描仪,所有的方式,你可以不喜欢

Scanner s = new Scanner("name1 lorem, some description\n" + 
         "name2 ipsum, some other, description \n" + 
         "name3 dolor, a third. description\n"); 

s.useDelimiter(","); 

while (s.hasNext()) 
    System.out.println("col1: " + s.next() + ", col2:" + s.skip(",").nextLine()); 

(它产生。同样的输出)

1

如果你只得到了两列,用逗号分隔,一个简单的替代Scanner是只用String.substring

int i = s.indexOf(','); 
String name = s.substring(0,i); 
String desc = s.substring(i+1); 
+1

或String.split – Thilo 2010-09-30 07:24:05

2

只需使用一个库,用于读取/写入CSV像OpenCSV并且您不必重新发明轮子:)

+0

这也将处理字段和多行字符串等中的引号引号和逗号。 – Thilo 2010-09-30 07:23:44