在java中解析逗号分隔的数据

时间:2014-08-22 21:10:39

标签: java comma

在调用构造函数创建对象之前,我需要将输入数据解析为4个不同的参数,如下面的格式。有什么想法吗?

样本数据输入格式:

rawdata = "900,300,Ernest,Fuller\n777,555,Henry,Miller\n";     //and so on

class BaseRecord {

      int callerId;
      int areaId;
      String firstName;
      String lastName;

      BaseRecord (int cId, int aId, String fName, String lName)

                callerId = cId;
                areaId = aId;
                firstName = fName;
                lastName = lName;

}

3 个答案:

答案 0 :(得分:3)

使用Matcher包中的java.util.regex

String rawdata = "900,300,Ernest,Fuller\n777,555,Henry,Miller\n";

Matcher m = Pattern.compile("(\\d+),(\\d+),(\\w+),(\\w+)", Pattern.DOTALL).matcher(rawdata);
while(m.find()){
    int cId = Integer.parseInt(m.group(1));
    int aId = Integer.parseInt(m.group(2));
    String fName = m.group(3);
    String lName = m.group(4);

    // your logic here
    new BaseRecord (int cId, int aId, String fName, String lName);
}

通过这种方式,您可以拥有多个换行符并阻止NumberFormatException上的parseInt

答案 1 :(得分:1)

如果你仍然不确定到目前为止给出的帮助还有一点。在新行上拆分原始数据。然后拆分结果数组的每个元素以获得您正在寻找的4个参数。 E.g。

String rawdata = "900,300,Ernest,Fuller\n777,555,Henry,Miller\n";

String[] records = rawdata.split("\n");

List<BaseRecord> baseRecords = new ArrayList<BaseRecord>();

for (String record: records) {
    String [] recordData = record.split(",");

    baseRecords.add(new BaseRecord(Integer.parseInt(recordData[0]), Integer.parseInt(recordData[1]), recordData[2], recordData[3]));
}

现在您有一个BaseRecord对象列表。这假设所有数据都是按照您的示例中所示形成的。

答案 2 :(得分:-1)

String s = new String("a,b,c");
String[] split = s.split(",");