gpt4 book ai didi

java - 如何使用java将此字符串转换为二维数组

转载 作者:行者123 更新时间:2023-11-30 05:59:37 24 4
gpt4 key购买 nike

我有文本文件

    0B85     61
0B86 6161
0B86 41
0B87 69
0B88 6969
0B88 49
0B89 75
0B8A 7575
0B8F 6565

我想把这个字符串写入二维数组。 (即)String read[0][0]=0B85String read[0][1]=61。请提出使用 java 执行此操作的任何想法。提前致谢。

最佳答案

类似这样的东西:

String s = "0B85 61 0B86 6161 0B86 41 0B87 69 0B88"
+ " 6969 0B88 49 0B89 75 0B8A 7575 0B8F 6565";
String[] parts = s.split(" ");
String[][] table = new String[parts.length / 2][2];
for (int i = 0, r = 0; r < table.length; r++) {
table[r][0] = parts[i++];
table[r][1] = parts[i++];
}
System.out.println(java.util.Arrays.deepToString(table));
// prints "[[0B85, 61], [0B86, 6161], [0B86, 41], [0B87, 69],
// [0B88, 6969], [0B88, 49], [0B89, 75], [0B8A, 7575], [0B8F, 6565]]

本质上是你split(" ")将长字符串分成几个部分,然后将这些部分排列成 2 列 String[][] table .

也就是说,最好的解决方案是拥有 Entry每行都有某种类型的类,并且有一个 List<Entry>而不是String[][] .


NOTE: Was thrown off by formatting, keeping above, but following is what is needed

如果您有columns.txt包含以下内容:

    0B85     61
0B86 6161
0B86 41
0B87 69
0B88 6969
0B88 49
0B89 75
0B8A 7575
0B8F 6565

然后您可以使用以下命令将它们排列成 2 列 String[][] :

import java.util.*;
import java.io.*;
//...

List<String[]> entries = new ArrayList<String[]>();
Scanner sc = new Scanner(new File("columns.txt"));
while (sc.hasNext()) {
entries.add(new String[] { sc.next(), sc.next() });
}
String[][] table = entries.toArray(new String[0][]);
System.out.println(java.util.Arrays.deepToString(table));

我会重申 List<Entry>String[][] 好得多不过。

另请参阅

  • 《Effective Java》第二版,第 25 条:优先选择列表而不是数组
  • Effective Java 第 2 版,第 50 条:避免使用其他类型更合适的字符串

关于java - 如何使用java将此字符串转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2847217/

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