Примерно так работает:
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[][]
.
ПРИМЕЧАНИЕ: был скинут путем форматирования, выдерживая выше, но вот что нужно
Если у вас есть 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 2nd Edition, Item 25: Предпочитать списки массивам
- Effective Java 2nd Edition, Item 50: Избегайте строк, для которых более подходящими являются другие типы