我对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位。我只是不知道如何格式化它。非常感谢帮助!
答案 0 :(得分:2)
如果您正在使用简单的csv文件执行家庭作业,请使用其他答案,但在逗号字符,
上拆分字符串将不适用于更复杂的CSV。例如:
"Roberts, John", Chicago
这应该被理解为两个单元格,其中第一个字符串是Roberts, John
。 ,
上的天真拆分会将其视为三个单元格:"Roberts
,John"
和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