- ベストアンサー
Stringの文字列をString[]配列に変換したい
お世話になります♪ たとえばこういうStringの文字列があるとします。 String s = "私は Javaを 勉強 しています。"; これを下記のようなイメージでString[]配列に変換したいのですが、 {"私は","Javaを","勉強","しています。"}; 何かいい方法はないでしょうか? ヒントをください! よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
java.util.StringTokenizerで区切り文字を半角スペースで使用して、 hasMoreTokens()をwhileで回しながらそのループ中で配列に投入してはどうですか?
その他の回答 (4)
- tachiwa
- ベストアンサー率34% (25/73)
ご参考までに import java.util.*; class Hello022 { public static void main(String args[]){ String[] str = new String[4]; int i = 0; String s = "私は Javaを 勉強 しています。"; StringTokenizer st = new StringTokenizer(s ," "); while(st.hasMoreTokens()){ str[i] = st.nextToken(); i++; } for(int j=0;j<str.length;j++){ System.out.println(str[j]); } } }
お礼
完璧なサンプルありがとうございます!
- fortranxp
- ベストアンサー率26% (181/684)
substringを使うならば少し苦しいですが class Bunkatsu { public static void main(String[] args){ int i=0; int j=0; int k[]=new int[10]; String str="私は Javaを 勉強 しています。"; String sstr[]=new String[10]; k[i]=0; i=i+1; str=" "+str; while(j<str.length()){ if(str.substring(j,j+1).equals(" ")||str.substring(j,j+1).equals("。")){ k[i]=j+1; i=i+1; } j=j+1; } for(int l=0;l<i-1;l++){ sstr[l]=str.substring(k[l],k[l+1]); System.out.println(sstr[l]); } } }
お礼
こういうやり方もあるんですね! ありがとうございます!
- pcbeginner
- ベストアンサー率46% (261/560)
Java1.4以降かつ正規表現が理解できるならStringクラスのsplitメソッドでもOK。
お礼
正規表現はまだ理解できていません・・・。 今度挑戦してみます! ありがとうございました!
- u_witch
- ベストアンサー率34% (26/76)
区切りたい文字と文字の間に半角スペースが入るというのを前提に記述します。 クラスとしては、StringTokenizerクラスが使えると思います。 サンプルソースとしては… StringTokenizer strToken = new StringTokenizer( "私は Javaを 勉強 しています。", " " ); int intMax = strToken.countTokens(); String[] strPara = new String[ intMax ]; for( int i = 0; i < intMax; i++ ) { strPara[ i ] = strToken.nextToken(); } これで、 strPara[ 0 ] = "私は" strPara[ 1 ] = "Javaを" strPara[ 2 ] = "勉強" strPara[ 3 ] = "しています。" が、格納されると思います。 ※他に良い案があるかもしれませんが…(汗)
お礼
わかりやすいサンプルありがとうございました!
お礼
サンプルを見る前にある程度自分で組むことが出来ました! ありがとうございます!