Frage

Was eine einfache Implementierung eines Verfahrens wäre, einen String wie „Hallo alle“ auf „helloThereEveryone“ zu konvertieren. In JavaME Unterstützung für String und String Utility Operationen sind sehr begrenzt.

War es hilfreich?

Lösung

Kurze primitive Implementierung. Ich habe keine Ahnung von Beschränkungen von J2ME, so dass ich hoffe, sie paßt oder es gibt ein paar Ideen ...

String str = "Hello, there, everyone?";

StringBuffer result = new StringBuffer(str.length());
String strl = str.toLowerCase();
boolean bMustCapitalize = false;
for (int i = 0; i < strl.length(); i++)
{
  char c = strl.charAt(i);
  if (c >= 'a' && c <= 'z')
  {
    if (bMustCapitalize)
    {
      result.append(strl.substring(i, i+1).toUpperCase());
      bMustCapitalize = false;
    }
    else
    {
      result.append(c);
    }
  }
  else
  {
    bMustCapitalize = true;
  }
}
System.out.println(result);

Sie können die gewundenen Groß ersetzen hängen mit:

result.append((char) (c - 0x20));

obwohl es könnte mehr hackish erscheinen.

Andere Tipps

Mit CDC haben Sie:

String.getBytes (); // die Zeichenfolge auf ein Array von Bytes zu konvertieren String.indexOf (int ch); // für den Beginn der Worte Ortung String.trim (); // entfernen Sie Leerzeichen

Für niedrigere / Großbuchstaben Sie hinzufügen müssen (subtrahieren) 32.

Mit diesen Elementen können Sie Ihre eigene Methode erstellen.

private static String toCamelCase(String s) {
    String result = "";
    String[] tokens = s.split("_"); // or whatever the divider is
    for (int i = 0, L = tokens.length; i<L; i++) {
        String token = tokens[i];
        if (i==0) result = token.toLowerCase();
        else
            result += token.substring(0, 1).toUpperCase() +
                token.substring(1, token.length()).toLowerCase();
    }
    return result;
}

Vorschlag:

Kann sein, wenn Sie href="https://stackoverflow.com/questions/121988/how-can-i-add-a-regex-match-to-my-j2me-project"> Port ein , können Sie es verwenden Räume in Ihrem String abzustreifen ...

Versuchen Sie folgenden Code

public static String toCamel(String str) {
    String rtn = str;
    rtn = rtn.toLowerCase();
    Matcher m = Pattern.compile("_([a-z]{1})").matcher(rtn);
    StringBuffer sb = new StringBuffer();
    while (m.find()) {
        m.appendReplacement(sb, m.group(1).toUpperCase());
    }
    m.appendTail(sb);
    rtn = sb.toString();
    return rtn;
}

Ich würde vorschlagen, den folgenden einfachen Code:

    String camelCased = "";
    String[] tokens = inputString.split("\\s");
    for (int i = 0; i < tokens.length; i++) {
        String token = tokens[i];
        camelCased = camelCased + token.substring(0, 1).toUpperCase() + token.substring(1, token.length());
    }
    return camelCased;

Ich würde es tun, wie folgt:

private String toCamelCase(String s) {
    StringBuffer sb = new StringBuffer();
    String[] x = s.replaceAll("[^A-Za-z]", " ").replaceAll("\\s+", " ")
            .trim().split(" ");

    for (int i = 0; i < x.length; i++) {
        if (i == 0) {
            x[i] = x[i].toLowerCase();
        } else {
            String r = x[i].substring(1);
            x[i] = String.valueOf(x[i].charAt(0)).toUpperCase() + r;

        }
        sb.append(x[i]);
    }
    return sb.toString();
}

check this

import org.apache.commons.lang.WordUtils;

String camel = WordUtils.capitalizeFully('I WANT TO BE A CAMEL', new char[]{' '});

return camel.replaceAll(" ", "");
scroll top