こんばんは。

今日は個人的に忙しかったのと、マップエディタを製作中なのとで中々作業が進みませんでした。

同じJavaでもSEとMEでは使えるクラスが違って、実装も大きく異なってきますね。

特に、MEでは使えるクラスが少なくて不便に感じることが多いかもしれませんが、描画周りは本当に楽させてもらってるなぁという感じです。



さて、ネタも尽きてきましたが、J2MEでsplit関数でも実装してみましょう。



public static String[] split(String str,String sep) {

    Vector temp = new Vector();

    while(str.indexOf(sep) > 0){

      temp.addElement(str.substring(0,str.indexOf(sep)));

      str = str.substring(str.indexOf(sep)+sep.length());

    }

    temp.trimToSize();

    String[] result = new String[temp.capacity()+1];

    for(int i=0;i<temp.capacity();i++){

      result[i] = (String)temp.elementAt(i);

    }

    result[temp.capacity()]=str;

    return result;

}



単純な実装なので不明な点は無いと思います。あるとしたらVectorって0から入れてったら値の順序って保証されてるよね…?ってちょっと不安になるくらいですかね。

セパレータの位置をString.indexOf関数で探し、そこまでをString.substring関数で区切って一時保存用のVectorに放り込み…を繰り返して、最後に残った末尾も結果に加えてやる、という流れになっています。

携帯アプリでは未知の文字列が登場する機会自体が少ないので、split関数が要るかは若干疑問ですが…いざ必要なときのため実装しておくのも悪くないですね。