문제

"Hello Everyone"과 같은 문자열을 "Hellothereeeveryone"으로 변환하는 방법의 간단한 구현은 무엇입니까? String 및 StringBuffer 유틸리티 운영에 대한 Javame 지원에서는 상당히 제한적입니다.

도움이 되었습니까?

해결책

빠른 원시 구현. 나는 J2ME의 제한에 대해 전혀 모른다. 그래서 나는 그것이 적합하거나 아이디어를 제공하기를 바랍니다 ...

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

복잡한 대문자 추가를 다음과 같이 교체 할 수 있습니다.

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

더 해킹 된 것처럼 보일 수도 있습니다.

다른 팁

CDC와 함께 : 당신은 다음과 같습니다.

String.getBytes (); // 문자열을 바이트 배열로 변환하려면 string.indexof (int ch); // 단어의 시작을 찾으려면 string.trim (); // 공백을 제거합니다.

하위/대문자의 경우 추가 (빼기) 32를 추가해야합니다.

이러한 요소를 사용하면 자신의 방법을 구축 할 수 있습니다.

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

제안:

가능하다면 가능할 수도 있습니다 J2ME의 포트 One Regexp 라이브러리, 당신은 그것을 사용하여 줄의 공간을 벗길 수 있습니다 ...

다음 코드를 시도하십시오

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

다음과 같은 간단한 코드를 제안합니다.

    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;

나는 이것처럼 할 것이다 :

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

이것을 확인하십시오

import org.apache.commons.lang.WordUtils;

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

return camel.replaceAll(" ", "");
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top