0

空白の直後にcharacter にアクセスして Capitalに変換したい。空白スペースを大文字にして削除することは知っていますが、スペースの後の文字にアクセスできません。

変換したい:"File to be uploaded""FileToBeUploaded".

4

5 に答える 5

3

正規表現なし

最初に行うことは、分割すること" "です..

String[] tokens = string.split(" ");

次のステップは、各トークンを循環し、最初の文字を取得することです。

for(int x = 0; x < tokens.length; x++)
{
    String token = tokens[x];
    String firstLetter = String.valueOf(tokens[x].charAt(0));
    // After you have first letter, it's just a case of moving to upper case..
    firstLetter = firstLetter.toUpperCase();
    tokens[x] = firstLetter + tokens[x].substring(1, tokens[x].length());
}

:読み取り専用でforeachあるため、ループは使用しませんでした。foreach

最後に全体をくっつけます。これは同じループで実行できます。配列自体を変更したくない場合はforeach、このコンテキストで a を使用すると見栄えが良くなります。次のように:

StringBuilder sb = new StringBuilder();
// Use a string builder for string creation.

for(String token : tokens)
{
    String firstLetter = String.valueOf(token.charAt(0));
    // After you have first letter, it's just a case of moving to upper case..
    firstLetter = firstLetter.toUpperCase();        
    sb.append(firstLetter + token.substring(1, token.length()););       
}

System.out.println(sb.toString());
于 2013-09-05T09:49:21.897 に答える
1

// 正規表現を使えばとても簡単です

private String capitalEachWord(String s) {
    Pattern p = Pattern.compile("\\s+\\w"); // Search for one or more space
    Matcher m = p.matcher(s);
    StringBuffer buffer = new StringBuffer();
    while (m.find()) m.appendReplacement(buffer, m.group().toUpperCase());
    m.appendTail(buffer); // add to last
    return buffer.toString();
}
于 2013-09-05T09:52:54.220 に答える
0

この形式の文字列はCamelCaseと呼ばれます。

文字列内の文字を変更することはできないため (不変であるため)、文字を繰り返し処理して新しい文字列を作成する必要があります。空白に遭遇した場合は、その文字をスキップしますが、次の文字を大文字にすることを忘れないでください.

public static String toCamelCase (String s) {
    StringBuilder builder = new StringBuilder();
    boolean capitalizeNextChar = false;
    for (int i = 0; i < s.length(); i++) {
        char c = s.charAt(i);
        if (Character.isWhitespace(c)) {
            capitalizeNextChar = true;
        } else {
            if (capitalizeNextChar) {
                c = Character.toUpperCase(c);
                capitalizeNextChar = false;
            }
            builder.append(c);
        }
    }
    return builder.toString();
}
于 2013-09-05T09:57:13.870 に答える