Hatena::Groupprogram

ひとり開発日記。 このページをアンテナに追加 RSSフィード

2010/12/07 (Tue)

キャメル ケース (単語の区切り記号なし) をすべて大文字 (アンダー スコアで区切られた単語) から Java 文字列を変換する最も簡単な方法は何ですか?

| キャメル ケース (単語の区切り記号なし) をすべて大文字 (アンダー スコアで区切られた単語) から Java 文字列を変換する最も簡単な方法は何ですか? - ひとり開発日記。 を含むブックマーク はてなブックマーク - キャメル ケース (単語の区切り記号なし) をすべて大文字 (アンダー スコアで区切られた単語) から Java 文字列を変換する最も簡単な方法は何ですか? - ひとり開発日記。

タイトルはほとんどがすべてです。 私は Java では、文字列形式 "THIS_IS_AN_EXAMPLE_STRING"から「ThisIsAnExampleString」の形式で、変換することが、最も簡単な/ほとんどエレガントな方法は何ですか? 私は、String.replaceAll()を使用して、正規表現を行うには、少なくとも 1 つの方法があるはずが、私は実際には Java 組み込むを理解した図します。 私の最初の考えです: がアンダー スコア (_) 文字列を付加、文字列全体を小文字に変換し、replaceAll を使用する前にアンダー スコアでは、大文字のバージョンによって、すべての文字を変換します。

no title

まぁ、早い話、"THIS_IS_AN_EXAMPLE_STRING"から"ThisIsAnExampleString"にしたいのね。 毎度お馴染みguava-librariesCommons Langを使って。

import org.apache.commons.lang.StringUtils;

import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;

public class Camel {

    private Camel() {}

    /** 小文字に統一後、先頭を大文字にするFunction */
    private static final Function<String, String> CAPITALIZER = new Function<String, String>() {
        @Override
        public String apply(String s) {
            return StringUtils.capitalize(s.toLowerCase());
        }
    };

    public static String convert(String value) {
        // '_'でsplit
        Iterable<String> split = Splitter.on('_').split(value);
        // キャピタライズした集合に変換
        Iterable<String> trans = Iterables.transform(split, CAPITALIZER);
        // 結合した文字列を返す
        return Joiner.on("").join(trans);
    }
}
public class Stub {

    public static void main(String[] args) {
        String converted = Camel.convert("THIS_IS_AN_EXAMPLE_STRING");
        System.out.println(converted);
    }
}

結果。

ThisIsAnExampleString
追記 guava-librariesを使った、更に簡単な方法
g:program:id:halflite:20130730:camel
トラックバック - http://program.g.hatena.ne.jp/halflite/20101207