更新された回答:
ああ、よし、テキストを列の幅で分割したい。列の長さは次のようになります。
6
5
5
6
8
6
4
18
9
(残り)
したがって、行を読んでから、それらの個々の部分を取得するために使用し、おそらくBufferedReader#readLine
空白を削除するために使用します。String#substring
String#trim
BufferedReader r = /*...get a BufferedReader for your input...*/;
String line;
String[] parts;
int[] columns = new int[]{ // The starting index of each column
6,
5+6,
5+5+6,
6+5+5+6,
8+6+5+5+6,
6+8+6+5+5+6,
4+6+8+6+5+5+6,
18+4+6+8+6+5+5+6,
9+18+4+6+8+6+5+5+6
};
int i;
int start, end;
int linelen;
// Read each line
while ((line = r.readLine()) != null) {
// Get its length
linelen = line.length();
// Get an array for the result
parts = new string[columns.length];
// Loop through our column starting indexes
for (i = 0; i < columns.length; ++i ) {
// Get the start and end indexes for this column
start = columns[i];
end = i < columns.length - 1 ? columns[i+1] : linelen;
// Is the string long enough?
if (linelen < start) {
// No, use null
parts[i] = null;
}
else {
// Yes, grab the text
parts[i] = line.substring(start, end > linelen ? linelen : end);
// Note - you may want `.trim()` on the end of the above, if you
// don't want trailing spaces (or leading spaces, but none of your
// examples has leading spaces).
}
}
// **Use the `parts` of this line.
}
の配列ではなくクラスを使用し、parts
その解析ロジックをクラス内に配置することも検討してください。
元の答え:
との組み合わせを探しているようです:BufferedReader#readLine
String#split
BufferedReader r = /*...get a BufferedReader for your input...*/;
String line;
String[] parts;
while ((line = r.readLine()) != null) {
parts = line.split(" +");
// Use the `parts` array
}
readLine
入力から行を読み取ります。
split
正規表現で定義された区切り文字を使用して、文字列を文字列配列に分割します。あなたの場合、区切り文字は 1 つ以上のスペースにすぎないようです。