質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

5回答

3943閲覧

Javaを用いて、ある行から文字を抽出したい

kohekoh

総合スコア140

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/01/10 06:36

javaを用いた実装についての質問です

テキストファイルがあり、行からIDを抽出して、
ファイルに書き込みたいのですがどうすればよいでしょうか

例えば、
userID:kkk text:~~~~~~~
userId;lll text:~~~~~~~
userID:jjj text:~~~~~~~

というファイルがあれば

userID:kkk
userID:lll
userID:jjj
を抽出して、ファイルに出力したいです

よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

質問者さんは「例えば・・・」として
userID:kkk text:
なら
userID:kkkを抽出して・・・
と書かれていますが、
「例えば」でなく、ルールを記述して下さい。
「行の最初から(空白文字が無く)英小文字で'user'、続いて(空白文字を置かないで)英大文字で'ID'」
のようにです。
ルールが記述できれば、後はその記述どおりにjavaを記述するだけです。
ルールにはコード体系も含めて考えて下さい。

他の回答者さんの回答はこの「ルール」をそれなりに考えて回答なさったと思います。
「ルール」を考えるのは回答側ではなく、質問者さん(または出題者)の役割と思います。

投稿2017/01/10 07:12

nob.

総合スコア711

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java.util.regex.Patternにより正規表現を用いたパターンマッチをするか、この例ではほぼ固定的なパターンに見えるので各行を読み込んで先頭が"userID"でその次の文字が":"or";"かどうかチェックしてそのあとをスペースが出現するまで切り出すといった方法で実現できるのではないでしょうか?

投稿2017/01/10 06:48

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

入力されるテキストファイルのレイアウトが提示されるとおりに定まっているのであれば、

java

1//読み込み対象のファイルを開く 2//1行ごとに読む 3 //読んだ行を空白でsplitする。 4 //得られた配列の要素[0]が、「userID:xxx」となっているので、List<String> に貯めておく。 5 6//任意のファイル名で出力ファイルを作成する 7 //貯めたListに要素がある限り、ファイルに書き出す。

といったコードを書けばよいかと。ソースの提示が無かったので、方法論のみの回答です。

投稿2017/01/10 06:53

akio221

総合スコア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

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問