173 Stimmen

Was ist der einfachste Weg, um einen Java-String von Großbuchstaben (Wörter durch Unterstriche getrennt) in CamelCase (ohne Worttrennzeichen) umzuwandeln?

Der Titel sagt im Grunde alles aus. Wie kann ich in Java auf einfachste / eleganteste Weise einen String im Format "THIS_IS_AN_EXAMPLE_STRING" in das Format "ThisIsAnExampleString" umwandeln? Ich denke, es muss mindestens eine Möglichkeit geben, dies mit String.replaceAll() und einem Regex zu tun.

Meine ersten Gedanken sind: Den String mit einem Unterstrich (_) versehen, den gesamten String in Kleinbuchstaben umwandeln und dann replaceAll verwenden, um jedes Zeichen, das von einem Unterstrich gefolgt wird, in seine Großschreibungsform umzuwandeln.

1voto

Ashish Punkte 11

Sie können dies auch versuchen:

 public static String convertToNameCase(String s)
    {
        if (s != null)
        {
            StringBuilder b = new StringBuilder();
            String[] split = s.split(" ");
            for (String srt : split)
            {
                if (srt.length() > 0)
                {
                    b.append(srt.substring(0, 1).toUpperCase()).append(srt.substring(1).toLowerCase()).append(" ");
                }
            }
            return b.toString().trim();
        }
        return s;
    }

0voto

Arindam Punkte 24
public static final String  UPPER_CAMEL = "initUp";
public static final String  LOWER_CAMEL = "initLow";

public String toCamel(String src, String separator, String format) {
    StringBuilder builder = new StringBuilder(src.toLowerCase());
    int len = builder.length();

    for (int idx = builder.indexOf(separator); idx > 0 && idx < len; idx = builder.indexOf(separator, idx)) {
        builder = builder.replace(idx, idx + 2, (String.valueOf(builder.charAt(idx + 1)).toUpperCase()));
    }

    switch (format) {
    case LOWER_CAMEL:
        builder.setCharAt(0, Character.toLowerCase(builder.charAt(0)));
        break;
    default:
        builder.setCharAt(0, Character.toUpperCase(builder.charAt(0)));
        break;
    }

    return builder.toString();

}

Invocation as

toCamel("THIS_IS_AN_EXAMPLE_STRING", "_", UPPER_CAMEL)

Execution Time: 14 ms

0voto

fitorec Punkte 3447

Ein einfaches Snippet:

 public static String camelCase(String in) {
    if (in == null || in.length() < 1) { return ""; } // in überprüfen
    String out = "";
    for (String part : in.toLowerCase().split("_")) {
        if (part.length() < 1) { // Länge überprüfen
            continue;
        }
        out += part.substring(0, 1).toUpperCase();
        if (part.length() > 1) { // Länge überprüfen
            out += part.substring(1);
        }
    }
    return out;
}

0voto

Sajani Punkte 117

Eine weitere Lösung hierfür könnte wie folgt sein.

public static String toCamelCase(String str, String... separators) {
    String separatorsRegex = "\\".concat(org.apache.commons.lang3.StringUtils.join(separators, "|\\"));
    List splits = Arrays.asList(str.toLowerCase().split(separatorsRegex));
    String capitalizedString = (String)splits.stream().map(WordUtils::capitalize).reduce("", String::concat);
    return capitalizedString.substring(0, 1).toLowerCase() + capitalizedString.substring(1);
}

0voto

AZ_ Punkte 36741

Es wird Enum Constant in Camel Case umwandeln. Das wäre hilfreich für jeden, der nach einer solchen Funktion sucht.

public enum TRANSLATE_LANGUAGES {
        ARABISCH("ar"), BULGARISCH("bg"), KATALANISCH("ca"), VEREINFACHTES_CHINESISCH("zh-CN"), TRADITIONELLES_CHINESISCH("zh-TW"), TSCHECHISCH("cs"), DÄNISCH("da"), HOLLÄNDISCH("nl"), ENGLISCH("en"), ESTNISCH("et"), FINNISCH("fi"), FRANZÖSISCH("fr"), DEUTSCH("de"), GRIECHISCH("el"), HAITIANISCH_KREOLISCH("ht"), HEBRÄISCH("he"), HINDI("hi"), HMONG_DAW("mww"), UNGARISCH("hu"), INDONESISCH("id"), ITALIENISCH("it"), JAPANISCH("ja"), KOREANISCH("ko"), LETTISCH("lv"), LITAUISCH("lt"), MALAYISCH("ms"), NORWEGISCH("no"), PERSISCH("fa"), POLNISCH("pl"), PORTUGIESISCH("pt"), RUMÄNISCH("ro"), RUSSISCH("ru"), SLOWAKISCH("sk"), SLOWENISCH("sl"), SPANISCH("es"), SCHWEDISCH("sv"), THAILÄNDISCH("th"), TÜRKISCH("tr"), UKRAINISCH("uk"), URDU("ur"), VIETNAMESISCH("vi");

        private String code;

        TRANSLATE_LANGUAGES(String language) {
            this.code = language;
        }

        public String langCode() {
            return this.code;
        }

        public String toCamelCase(TRANSLATE_LANGUAGES lang) {
            String toString = lang.toString();
            if (toString.contains("_")) {
                String st = toUpperLowerCase(toString.split("_"));
            }

            return "";
        }

        private String toUpperLowerCase(String[] tempString) {
            StringBuilder builder = new StringBuilder();

            for (String temp : tempString) {

                String char1 = temp.substring(0, 1);
                String restString = temp.substring(1, temp.length()).toLowerCase();
                builder.append(char1).append(restString).append(" ");

            }

            return builder.toString();
        }
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X