アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります♪

たとえばこういうStringの文字列があるとします。
String s = "私は Javaを 勉強 しています。";
これを下記のようなイメージでString[]配列に変換したいのですが、
{"私は","Javaを","勉強","しています。"};

何かいい方法はないでしょうか?
ヒントをください!

よろしくお願いします。

A 回答 (5件)

java.util.StringTokenizerで区切り文字を半角スペースで使用して、


hasMoreTokens()をwhileで回しながらそのループ中で配列に投入してはどうですか?
    • good
    • 2
この回答へのお礼

サンプルを見る前にある程度自分で組むことが出来ました!
ありがとうございます!

お礼日時:2006/11/06 17:51

ご参考までに



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]);
}
}
}
    • good
    • 2
この回答へのお礼

完璧なサンプルありがとうございます!

お礼日時:2006/11/06 17:47

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]);
}
}
}
    • good
    • 1
この回答へのお礼

こういうやり方もあるんですね!
ありがとうございます!

お礼日時:2006/11/06 17:48

Java1.4以降かつ正規表現が理解できるならStringクラスのsplitメソッドでもOK。

    • good
    • 0
この回答へのお礼

正規表現はまだ理解できていません・・・。
今度挑戦してみます!
ありがとうございました!

お礼日時:2006/11/06 17:49

区切りたい文字と文字の間に半角スペースが入るというのを前提に記述します。



クラスとしては、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 ] = "しています。"

が、格納されると思います。
※他に良い案があるかもしれませんが…(汗)
    • good
    • 0
この回答へのお礼

わかりやすいサンプルありがとうございました!

お礼日時:2006/11/06 17:50

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