CSV文件解析

实现功能:针对读取的CSV文档字符串进行Map格式输出

主要代码如下:

public class CSVPaser extends Parser {

@Override
public Map<String, String> parse(String inputStr) throws ParserException {

return null;
}

public static void main(String[] args) {

String inputStr = "alice, 22, 1992/03/05\n" + "bob, 33, 1981/11/21\n" + "cart, 40, 1974/07/13";
// 说明:改段代码主要针对单行记录的输入做相应的解析
// String regex = ",";
// String[] words = inputStr.split(regex);
// Map<String, String> map = new HashMap<>();
// int i;
// for (i = 0; i < words.length; i++) {
// String s = String.valueOf(i);
// map.put(s, words[i]);
// }
// System.out.println(map);


//说明:该部分主要针对多条记录做相应的解析
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(inputStr.getBytes(Charset.forName("utf8"))), Charset.forName("utf8")));
String line;
while ( (line = br.readLine()) != null ) {
StringTokenizer st = new StringTokenizer(line,",");
List<String> list = new ArrayList<>();
Map<Integer, String> map = new HashMap<>();
while(st.hasMoreTokens()){
list.add(st.nextToken());
}
// System.out.println("===="+list);
for (int i = 0; i < list.size(); i++) {
map.put(i,list.get(i));
}
System.out.println(map);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

//范例解析结果如下:
{0=alice, 1= 22, 2= 1992/03/05}
{0=bob, 1= 33, 2= 1981/11/21}
{0=cart, 1= 40, 2= 1974/07/13}

posted @ 2017-08-09 18:02  疯码牛Pro  阅读(571)  评论(0编辑  收藏  举报