電子書籍の厳選無料作品が豊富!

文字列内の数字だけを取り出したいとおもっています。
たとえばファイル内からreadline()で読み込んだ文字列が
[0, 0] [-0.34063, 0.0756989] [-0.362579, 0.118652] [-0.36264, 0.118637]
だったならば
配列内に
{0,0,-0.34063,0.0756989,-0.362579,0.118652,-0.36264,0.118637 }
のように格納したいのですが可能なんでしょうか?
"["や空白のようなものを削除して数字だけを取り出したいのです。

現在はこのようにファイルの文字列を取得しています
FileReader fr = new FileReader(inputpath);
BufferedReader br = new BufferedReader(fr);

String read = br.readLine();

よろしくお願いします。

A 回答 (2件)

(1)String[] String#split()メソッドで引数に指定した正規表現により


  配列に分割することができます。
  今回は","、"["、"]"で区切られていますので、
  ",|\\[|\\]"と指定することで、データが区切れます。
(2)分割されたデータには空白が含まれているのでデータがあるものを数値に変換します。
  Strig String#trim()メソッドで前後にある余計な空白を取り除くことができます。
  double Double.parseDouble()メソッドで文字列をDoubleに変換できます。
(3)項目数がわからないのであれば変換されたデータをArryListに追加します。
  項目数が固定であればそのままdouble型配列に格納してしまえばいいでしょう。

こんな感じでしょうか
import java.util.ArrayList;

class test{
public static void main(String args[]){
ArrayList<Double> list=new ArrayList<Double>();
double result[];
String buf="[0, 0] [-0.34063, 0.0756989] [-0.362579, 0.118652] [-0.36264, 0.118637]";
String work[]=buf.split(",|\\[|\\]"); //データを分割
double tmp;
for(String s:work){
System.out.print("<"+s+">");
s=s.trim(); //余計な空白を除去
if(s.length()>0){//最終的にデータが残ってるかチェック
tmp=Double.parseDouble(s);//数値に変換
list.add(tmp);
}
}

System.out.println();
result=new double[list.size()];//データ数分の配列を用意
for(int i=0;i<result.length;i++){
result[i]=list.get(i);
System.out.print(result[i]+",");
}
}
}
    • good
    • 0
この回答へのお礼

ありがとうございます!まさに自分がやりたかったことがこれです!他の状況でも対応できそうなので非常にありがたいです!

お礼日時:2013/05/13 17:18

メモリ上にあるものであれば、労力を惜しまなければプログラムで通常できないことはありません。


最近、Javaさわっていないんで考え方だけ。すべてStringクラスのメソッド。
サンプルの文字列に特化しています。パターンが違う場合には自分で考えてください。

(1)"] ["を","に置き換える。
(2)" "を""に置き換える。
(3)"["を""に置き換える。
(4)"]"を""に置き換える。
(5)出来上がった文字列を","で分割する。

参考URL:http://docs.oracle.com/javase/jp/1.5.0/api/java/ …
    • good
    • 0
この回答へのお礼

ありがとうございます!一つ一つ置き換えるって手法もあるのですね。単純ながら思いつきませんでした。

お礼日時:2013/05/13 17:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!