javaを用いた実装についての質問です
テキストファイルがあり、行からIDを抽出して、
ファイルに書き込みたいのですがどうすればよいでしょうか
例えば、
userID:kkk text:~~~~~~~
userId;lll text:~~~~~~~
userID:jjj text:~~~~~~~
というファイルがあれば
userID:kkk
userID:lll
userID:jjj
を抽出して、ファイルに出力したいです
よろしくお願いします
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
質問者さんは「例えば・・・」として
userID:kkk text:
なら
userID:kkkを抽出して・・・
と書かれていますが、
「例えば」でなく、ルールを記述して下さい。
「行の最初から(空白文字が無く)英小文字で'user'、続いて(空白文字を置かないで)英大文字で'ID'」
のようにです。
ルールが記述できれば、後はその記述どおりにjavaを記述するだけです。
ルールにはコード体系も含めて考えて下さい。
他の回答者さんの回答はこの「ルール」をそれなりに考えて回答なさったと思います。
「ルール」を考えるのは回答側ではなく、質問者さん(または出題者)の役割と思います。
投稿2017/01/10 07:12
総合スコア711
0
java.util.regex.Patternにより正規表現を用いたパターンマッチをするか、この例ではほぼ固定的なパターンに見えるので各行を読み込んで先頭が"userID"でその次の文字が":"or";"かどうかチェックしてそのあとをスペースが出現するまで切り出すといった方法で実現できるのではないでしょうか?
投稿2017/01/10 06:48
総合スコア18394
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
入力されるテキストファイルのレイアウトが提示されるとおりに定まっているのであれば、
java
1//読み込み対象のファイルを開く 2//1行ごとに読む 3 //読んだ行を空白でsplitする。 4 //得られた配列の要素[0]が、「userID:xxx」となっているので、List<String> に貯めておく。 5 6//任意のファイル名で出力ファイルを作成する 7 //貯めたListに要素がある限り、ファイルに書き出す。
といったコードを書けばよいかと。ソースの提示が無かったので、方法論のみの回答です。
投稿2017/01/10 06:53
総合スコア716
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
こうすればいいのではないでしょうか
java
1import java.io.*; 2 3class CCC { 4 5 public static void main(String[] args) { 6 7 try (BufferedReader br = new BufferedReader(new FileReader("22.txt"));// 読み込みファイル名 8 BufferedWriter bw = new BufferedWriter(new FileWriter("33.txt"))) {// 書き込みファイル名 9 10 String dat = ""; 11 12 while ((dat = br.readLine()) != null) { 13 String[] a = dat.split("[ +]"); 14 String[] b = a[0].split("[;|:]"); 15 16 System.out.println("userID:" + b[1]); 17 bw.write("userID:" + b[1]); 18 bw.newLine(); 19 20 } 21 22 } catch (Exception e) { 23 } 24 25 } 26 27}
投稿2017/01/10 08:14
編集2017/01/10 08:26退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
Commons-IO を使うと、ファイルの読み書きはとても簡潔に書けるでしょう。行ごとの読み込み、ファイルへの保存なども簡単です。
あとは行ごとに読み込むデータの形式ですが、例示していただいた内容にバラツキがあるため(userID: となっているものや userId; となっているもの)正確ではないかも知れませんが、
行の左端から読み込んで、最初の半角スペースの手前までを出力する
のであれば、StringのindexOfメソッドで半角スペースの位置を取得でき、Stringの一部分を取得するのであれば
substringメソッドを使うと良いでしょう。
投稿2017/01/10 07:43
総合スコア12011
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。