私はこのサイトを頻繁に頻繁に使用しますが、私は答えが見つからないことがあります。これは他のいくつかの記事と似ていますが、私が探しているものに対する答えは見つかりませんでした。.txtファイルの文字列を2次元配列に読み込みます。引用符で囲まれたスペースを無視する。使用するのはJDK
これは学校のコースの一部であり、現在のところ、これはもっと大きなJavaプロジェクトのスタンドアロンのJavaクラスです。現在、私は.txtファイルを編集することができません、とONLY次のリソース使用するように制限しています:
john.doe 108de81c31bf9c622f76876b74e9285f "dead man" user
jane.doe 3e34baa4ee2ff767af8c120a496742b5 "dead woman" admin
barney.rubble a584efafa8f9ea7fe5cf18442f32b07b "secret password" mod
fred.flinstone 17b1b7d8a706696ed220bc414f729ad3 "R0ck3y business" user
luke.skywalker 3adea92111e6307f8f2aae4721e77900 "usetheforce1234" mod
leah.skywalker 0d107d09f5bbe40cade3de5c71e9e9b7 "saveme" admin
各エントリ:次のリストを使用して
標準JDK資源
java.util.Scanner;
java.io.FileInputStream;
java.io.IOException;
をタブで区切られています。
私が持っている現在のJavaコードは、次のとおりです。 のJohn.Doe 108de81c31bf9c622f76876b74e9285f "デッド 男" 期待
user
jane.doe
3e34baa4ee2ff767af8c120a496742b5
"dead
woman"
admin
barney.rubble
a584efafa8f9ea7fe5cf18442f32b07b
"secret
password"
mod
fred.flinstone
17b1b7d8a706696ed220bc414f729ad3
"R0ck3y
business"
user
luke.skywalker
3adea92111e6307f8f2aae4721e77900
"usertheforce1234"
mod
:
public static void main(String[] args) throws IOException {
FileInputStream credFile = null; // File input
Scanner inFS = null; // Scanner object
final int NUM_ROWS_CRED = 6;
final int NUM_COLS_CRED = 4;
String[][] credArray = new String[NUM_ROWS_CRED][NUM_COLS_CRED];
int i = 0; // Index variable
int j = 0; // Index variable
// Import file data from file.txt
credFile = new FileInputStream("file.txt");
inFS = new Scanner(credFile);
// Create array of file.txt
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
credArray[i][j] = inFS.next();
}
}
// Output array to verify array stored correctly.
for (i = 0; i < NUM_ROWS_CRED; ++i) {
for (j = 0; j < NUM_COLS_CRED; ++j) {
System.out.println(credArray[i][j] + " ");
}
System.out.println("");
}
credFile.close(); //Closes file.
}
私の現在の出力は次のようになります出力: john.doe 108de81c31bf9c622f76876b74e9285f 「dead man」 ユーザー
jane.doe
3e34baa4ee2ff767af8c120a496742b5
"dead woman"
admin
等...
ソリューションズ、指導、右方向へのポインタはすべて歓迎。また、.txtファイルを編集しないようにしっかりと縛られており、JDKと3つのリソースしか使用されていないことに注意してください。ありがとうございました。
'\ t'の行全体を分割しようとしましたか? –
'inFS.next();'は次の空白まで読み込みます。他の解決策では、 –
の引用符を使用する他の正規表現で分割することは、Scanner.useDelimiter()が許可されていることは安全です(java.util.Patternへの依存性のために除外されます)。区切り文字は '[\\ t]'(タブの文字にマッチするパターン)になります。引用符で囲まれた3番目のフィールドにあるタブ文字を除外する正規表現区切り文字を作成する方法があるかどうかはわかりませんしかし、 –