从.csv文件输入行中提取字段

时间:2015-11-21 08:00:28

标签: java arrays csv split

我对Java编程世界很陌生,虽然我知道这是一个非常简单易懂的问题,但我似乎无法用一种能够找到我需要的答案的方式来表达我的搜索。 ..所以希望来自这个社区的人不会介意帮助我。

我的程序需要从.csv文件中获取输入行,并使用逗号作为分隔符将其拆分为数组的字段。然后将数组的字段分配给不同数据类型的变量 - char,int,float和string。我所挣扎的是我的String变量的格式化。

以下是我的代码的一部分:

public void parseCSV(String inputLine) {

String[] splitFields;
splitFields = inputLine.split(",");

try {
    empNumber = Integer.parseInt(splitFIelds[0[);
    payType = splitFields[1].charAt(0);
    hourlyRate = Float.parseFloat(splitFields[2]);
    last name =

我需要将变量lastName(一种String数据类型)分配给我的splitFields数组的第3位。我只是不知道如何格式化它。非常感谢帮助!

3 个答案:

答案 0 :(得分:2)

对整体方法的警告

如果您正在使用简单的csv文件执行家庭作业,请使用其他答案,但在逗号字符,上拆分字符串将适用于更复杂的CSV。例如:

"Roberts, John", Chicago

这应该被理解为两个单元格,其中第一个字符串是Roberts, John,上的天真拆分会将其视为三个单元格:"RobertsJohn"Chicago

你应该做什么(强大的代码)

如果您正在编写严肃/生产级代码,则应使用Apache Commons CSV library来解析CSV。有逗号和引号的足够棘手的问题,可能的格式有足够的变化,使用成熟的库是有意义的。没有理由重新发明轮子。

另一种解析文本的工具

如果你是初学者,这可能会打开一堆蠕虫,但解析/验证文本输入的强大工具是“正则表达式”。正则表达式可用于将字符串与模式匹配并提取字符串的部分。从csv的特定单元格中提取字符串后,可以使用正则表达式来验证字符串是否符合您期望的格式。

虽然你不太可能真的需要这个项目的正则表达式,但我想我会提到它。

答案 1 :(得分:1)

String.split(...) returns a String[] so you really can just assign a specific index to a String.

String s = "one two dog!";
String[] sa = s.split(" ");
String ns = sa[1]; // ns now equals "two"

so you can just:

last_name = splitFields[index]; // this will work fine as long as index is within the `array` bounds.

Please mind that your last name var has a space(that might have been you problem).

I also recommend minding the parses, Integer.parseInt(...) & Float.parseFloat(...) might throw a NumberFormatException if you try to parse a non decimal values.

答案 2 :(得分:0)

很简单,它已经是var dateNow = new Date(); $('#current_date').datetimepicker({ defaultDate:moment(dateNow).hours(0).minutes(0).seconds(0).milliseconds(0) }); ,因此您无需执行其他解析。以下任务将起到作用:

String