Pergunta

O que seria uma simples implementação de um método para converter uma string como "Olá a todos" para "helloThereEveryone". Em apoio JavaME para operações de serviços públicos String e StringBuffer são bastante limitadas.

Foi útil?

Solução

implementação primitiva rápida. Eu não tenho idéia de restrições de J2ME, então eu espero que ele se encaixa ou ele dá algumas ideias ...

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);

Você pode substituir o complicado maiúsculas de acréscimo com:

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

embora possa parecer mais hackish.

Outras dicas

Com CDC, você tem:

String.getBytes (); // para converter a cadeia de uma matriz de bytes String.indexOf (int ch); // para localizar o início das palavras String.trim (); // para remover espaços

Para baixo / maiúscula é necessário adicionar (subtrair) 32.

Com estes elementos, você pode construir seu próprio método.

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;
}

Sugestão:

Pode ser se você pode biblioteca regexp em J2ME , você pode usá-lo para retirar espaços na cadeia ...

Tente seguinte código

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;
}

Gostaria de sugerir o seguinte código simples:

    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;

Eu faria isso como este:

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();
}

verificar este

import org.apache.commons.lang.WordUtils;

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

return camel.replaceAll(" ", "");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top