gpt4 book ai didi

java - 改进从 Java 中的文本文件中提取数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:27 25 4
gpt4 key购买 nike

我有 CSV 文件,其中包含以下形式的示例数据:

220 30    255   0   0     Javascript
200 20 0 255 128 Thinking in java

,其中第一列是高度,第二列是厚度,接下来的三列是颜色的 rgb 值,最后一列是标题。所有这些都需要被视为单独的变量。我已经为此编写了自己的解决方案,但我想知道是否有更好/更简单/更短的方法来做到这一点。然后提取的数据将用于创建 Book 对象,将每本书放入书籍数组中并使用 swing 打印。这是代码:

private static Book[] addBook(Book b, Book[] bookTab){
Book[] tmp = bookTab;
bookTab = new Book[tmp.length+1];
for(int i = 0; i < tmp.length; i++){
bookTab[i] = tmp[i];
}
bookTab[tmp.length] = b;

return bookTab;
}

public static void main(String[] args) {

Book[] books = new Book[0];

try {
BufferedReader file = new BufferedReader(new FileReader("K:\\books.txt"));

String s;
while ((s = file.readLine()) != null) {
int hei, thick, R, G, B;
String tit;

hei = Integer.parseInt(s.substring(0, 3).replaceAll(" ", ""));
thick = Integer.parseInt(s.substring(4, 6).replaceAll(" ", ""));
R = Integer.parseInt(s.substring(10, 13).replaceAll(" ", ""));
G = Integer.parseInt(s.substring(14, 17).replaceAll(" ", ""));
B = Integer.parseInt(s.substring(18, 21).replaceAll(" ", ""));

tit = s.substring(26);

System.out.println(tyt+wys+grb+R+G+B);

books = addBook(new Book(wys, grb, R, G, B, tyt),books);
}
file.close();
} catch (IOException e) {
//do nothing
}
}

最佳答案

I have CSV file with sample data in this form

那不是 CSV文件。那是一个“固定宽度格式”的文件。

I'm wondering if there are no better/easier/shorter ways of doing this

使用真正的 CSV 文件格式。然后使用大量可用的 Java CSV API 进行解析/格式化将很容易。例如OpenCSV .您甚至可以使用它在 List 之间进行转换beans(在您的情况下为 Book)和一个 CSV 文件。

(from a comment) the file is already created and I must keep it in that form. What about regex ?

Regex 只会让事情变得更糟,因为它不是常规 格式,而是固定 格式!如果您不能更改格式,甚至不能更改为 CSV,那么,您的方法就可以了。我只会替换 replaceAll(" ", "")通过 trim()因为这样效率更高(一个是正则表达式,另一个只是解析)。替换 Book[]通过 List<Book>也是个不错的建议,再加一本书更方便。然后你可以做 books.add(book) .另见 Collections tutorial .

关于java - 改进从 Java 中的文本文件中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2785467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com