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

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

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

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

Q&A

解決済

2回答

791閲覧

Java:テキスト整形について教えてください

ta.s

総合スコア7

Java

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

0グッド

0クリップ

投稿2018/04/07 09:15

テキストの整形について、
<TAG COL1=hoge DOM=fuga C=aaaa LABEL=mega default=value5 />
<TAG COL1=2222 DOM=bbbb C=cccc LABEL=seta default=value1 />
<TAG

上記のような<TAG~/>が多数含まれているテキストがあります。

これを整形して
mega.COL1=hoge
mega.DOM=fuga
mega.C=aaaa
mega.LABEL=mega
mega.default=value5
seta.COL1=2222
seta.DOM=bbbb
seta.C=cccc
seta.LABEL=seta
seta.default=value1


のように、<>のリストの途中にある要素を各要素の頭に追加する良い方法は
ありますでしょうか。
要素の1番目(COL1)にあるものを頭に追加することはできたのですが、途中にある要素を抜き出して頭に追加する方法がわからないため困っております。
お知恵をお借りできますでしょうか。

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

XMLのライブラリを使うほうが汎用性があっていいと思いますが、
形式が決まっているなら以下のように自前で処理してもいいでしょう。

java

1import java.util.LinkedHashMap; 2import java.util.Map; 3 4public class Q120784 { 5 6 static String data = 7 "<TAG\r\n" + 8 "COL1=hoge\r\n" + 9 "DOM=fuga\r\n" + 10 "C=aaaa\r\n" + 11 "LABEL=mega\r\n" + 12 "default=value5\r\n" + 13 "/>\r\n" + 14 "<TAG\r\n" + 15 "COL1=2222\r\n" + 16 "DOM=bbbb\r\n" + 17 "C=cccc\r\n" + 18 "LABEL=seta\r\n" + 19 "default=value1\r\n" + 20 "/>\r\n"; 21 22 public static void main(String[] args) { 23 Map<String, String> map = new LinkedHashMap<>(); 24 for (String line : data.split("[\r\n]+")) { // 行に分けて順に処理 25 switch (line) { 26 case "<TAG": // 開始時にmapを空にする 27 map.clear(); 28 break; 29 case "/>": // 終了時に保持した内容を出力する 30 String prefix = map.get("LABEL"); 31 map.forEach((key, value) -> 32 System.out.println(prefix + '.' + key + '=' + value)); 33 break; 34 default: // 名前と値を保持する 35 String[] pair = line.split("="); 36 map.put(pair[0], pair[1]); 37 break; 38 } 39 } 40 } 41} 42

実行結果

mega.COL1=hoge mega.DOM=fuga mega.C=aaaa mega.LABEL=mega mega.default=value5 seta.COL1=2222 seta.DOM=bbbb seta.C=cccc seta.LABEL=seta seta.default=value1

投稿2018/04/08 08:53

編集2018/04/08 08:55
nakazawaken1

総合スコア94

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

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

ta.s

2018/04/09 01:47

ありがとうございます、フォーマット固定でしたのでこれで解決できそうです。
guest

0

とりまこのあたりかな

https://xmlbeans.apache.org

java xml 解析

とかで調べると幸せになれるかも

投稿2018/04/07 09:56

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

ta.s

2018/04/09 01:40

ありがとうございます、確かにxml解析にした方がわかりやすいですよね。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問