• ベストアンサー

Javaでスペースとダブルコートで区切る

Javaで以下のような行を分割したいんですが苦戦しております。 1111 2222 "hogehoge hogehoge" abcde "hoge hoge hoge" これを 1111 2222 "hogehoge hogehoge" abcde "hoge hoge hoge" と区切りたい。 全体的にはスペースで区切りたいんですが、ダブルコートで括られている部分は 一つの値として区切りたい。 各項目は可変長です。 一文字ずつ解析するのはスピードの関係上出来ません。 なにかいい方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

全体の文字列を 1.まず、空白で分割して配列に格納 2.連結フラグをfalseで宣言 3.配列を先頭から処理する  3-1.連結フラグがtrueならば1つ前のデータに連結する   3-1-1.”で終われば連結フラグをfalseにする  3-2.文字列が”で開始していれば連結フラグをtrueにする こんな感じ?

miyamura200000
質問者

お礼

早速のご回答ありがとうございます。 ご回答いただいたやり方でいけそうだったんですが1項目が "hogehoge" hogehoge" のような場合、うまく分割出来ませんでした・・・・

その他の回答 (1)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

> "hogehoge" hogehoge" これってそもそもどういう風に分割されるの? "hogehoge" hogehoge"で1つ? "hogehoge"とhogehoge"? "hogehogeと" hogehoge"? ぱっと見ただけで3通りの考え方がある用に見える時点で 既にその文字列は正しく分割されないと思ったほうがいいと思う ”を優先して分割するのかスペースを優先して分割するのか 前からチェックするのか後ろからチェックするのかで 変わるから、どういう風に分割したいかで No1に書いた方法を”やスペース 前方が後方かを入れ替えてあげればいいだけね

miyamura200000
質問者

お礼

またまたご回答ありがとうございます。 "hogehoge" hogehoge"で1つとしたいです。 abc "hogehoge" hogehoge" def "hogehoge" なら abc "hogehoge" hogehoge" def "hogehoge" で分割したかった。 スペースで区切ったりダブルクォートで区切ったりになるので、やはり分割は無理がありそうですか・・・ どの項目はスペースで区切られ、どこはダブルクォートで括られているというのははっきりしている 文字列を扱うんですが、難しそうですか。 正規表現とかで出来たらいいと思うんですけど、ちょっとハードルが高いので苦労してます。

関連するQ&A