在Java中转换为大写和小写

Ara*_*rav 73 java string

我想将字符串的第一个字符转换为大写,其余字符转换为小写.我该怎么做?

例:

String inputval="ABCb" OR "a123BC_DET" or "aBcd"
String outputval="Abcb" or "A123bc_det" or "Abcd"
Run Code Online (Sandbox Code Playgroud)

pax*_*blo 112

试试这个尺码:

String properCase (String inputVal) {
    // Empty strings should be returned as-is.

    if (inputVal.length() == 0) return "";

    // Strings with only one character uppercased.

    if (inputVal.length() == 1) return inputVal.toUpperCase();

    // Otherwise uppercase first letter, lowercase the rest.

    return inputVal.substring(0,1).toUpperCase()
        + inputVal.substring(1).toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)

它基本上首先处理空字符串和单字符字符串的特殊情况,否则正确地处理两个以上字符的字符串.并且,正如评论中所指出的那样,功能不需要单字符特殊情况,但我仍然喜欢明确,特别是如果它导致更少的无用调用,例如子字符串以获得空字符串,更低的外壳它,然后附加它.


Mad*_*han 15

String a = "ABCD"
Run Code Online (Sandbox Code Playgroud)

用这个

a.toLowerCase();
Run Code Online (Sandbox Code Playgroud)

所有字母都会转换为简单的"abcd"
使用它

a.toUpperCase()
Run Code Online (Sandbox Code Playgroud)

所有字母都将转换为Capital,"ABCD"

这是汇入首都的第一封信:

a.substring(0,1).toUpperCase()
Run Code Online (Sandbox Code Playgroud)

这个转换其他字母简单

a.substring(1).toLowerCase();
Run Code Online (Sandbox Code Playgroud)

我们可以得到这两个的总和

a.substring(0,1).toUpperCase() + a.substring(1).toLowerCase();
Run Code Online (Sandbox Code Playgroud)

结果= "Abcd"


Boz*_*zho 10

WordUtils.capitalizeFully(str)来自apache commons-lang具有所需的确切语义.


Mar*_*tin 8

String inputval="ABCb";
String result = inputval.substring(0,1).toUpperCase() + inputval.substring(1).toLowerCase();
Run Code Online (Sandbox Code Playgroud)

将"ABCb"更改为"Abcb"

  • 如果inputval为0或1长度,请不要忘记处理. (7认同)

Ell*_*tus 5

我认为这比任何先前的正确答案都简单。我也会加入javadoc。:-)

/**
 * Converts the given string to title case, where the first
 * letter is capitalized and the rest of the string is in
 * lower case.
 * 
 * @param s a string with unknown capitalization
 * @return a title-case version of the string
 */
public static String toTitleCase(String s)
{
    if (s.isEmpty())
    {
        return s;
    }
    return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
}
Run Code Online (Sandbox Code Playgroud)

长度为 1 的字符串不需要被视为特殊情况,因为s.substring(1)s长度为 1时返回空字符串。

  • Paxdiablo 的版本在 s.length 为 1 时避免了不必要的串联。这个版本的代码行数较少,但是否“更简单”值得商榷。一般来说,更简洁并不意味着更具可读性。性能...很难说,尤其是因为它取决于一个字符串的概率。 (2认同)