3

我正在尝试读取一个 BufferedReader,它读取包含用逗号分隔的记录的文件。我想在两个逗号之间拆分每个字符串(或记录),去掉双引号,然后将每个字符串放入字符串数组的索引中。例如:

说我在文件中有这一行:

(“0001”、“00203”、“82409”(换行符)

“0002”、“00204”、“82500”(换行符)

ETC。)

我想将 0001 放入字符串数组 [1],我希望将 00203 放入字符串数组 [2],依此类推....

以下代码遍历文件,将第二列中的所有记录放入字符串数组[2]。这意味着,在我执行下面的代码后,如果我执行 System.out.println (arr[2]),它将打印 00203 和 00204,而我希望 array[2] 为 00203,array[5] 为00204。

这是我的代码:

public String[] getArray(String source) {

FileInputStream fileinput = new FileInputStream(source);
GZIPInputStream gzip = new GZIPInputStream(fileinput);
InputStreamReader inputstream = new InputStreamReader(gzip);
BufferedReader bufr = new BufferedReader(inputstream);

String str = null;
String[] arr = null;
    while((str = bufr.readLine()) != null) {
    arr = str.replace("\"", "").split("\\s*,\\s*");
}
return arr;
4

4 回答 4

1

Commons CSV专为您的特定用例而设计。让我们不要重新发明轮子,下面的代码将导致 GZipped CSV 被解析为字段和行,这似乎是您想要做的。

public String[][] getInfo() throws IOException {
    final CSVParser parser = new CSVParser(new FileReader(new InputStreamReader(new GZIPInputStream(fileinput)), CSVFormat.DEFAULT.withIgnoreSurroundingSpaces(true));
    String[][] result = parser.nextRecord().values();
    return result;
}
于 2012-11-09T16:59:32.657 回答
0

这些修改中很少有适合您的。

public String[] getArray(String source) {

FileInputStream fileinput = new FileInputStream(source);
GZIPInputStream gzip = new GZIPInputStream(fileinput);
InputStreamReader inputstream = new InputStreamReader(gzip);
BufferedReader bufr = new BufferedReader(inputstream);

String str = null;
List<String> numbers = new LinkedList<String>;

while((str = bufr.readLine()) != null) {
   String[] localArr = str.split(",");
   for(String intString : localArr){
    numbers.add(intString.trim());
   }
}
return arr;
于 2012-11-09T16:45:04.490 回答
0

您是否尝试过使用扫描仪类以及scanner.nextInt()。你不需要做条带化。

Scanner s = new Scanner(inputstream);
ArrayList<String> list = new ArrayList<String>();

while (s.hasNextInt())
    list.add(s.nextInt());
String[] arr = list.toArray(new String[list.size()]);
于 2012-11-09T16:41:50.240 回答
0

未测试:

arr = str.replaceAll("\"", "").replaceAll("(","").replaceAll(")","").split(",");
于 2012-11-09T16:48:55.733 回答