Java toTitleCase函数

时间:2012-02-15 13:56:19

标签: java string

我有这个Java函数,它应该将字符串s转换为标题大小写。它应该将s副本返回给调用方,保留s

目前,rv最终为空字符串。谁能告诉我为什么?

private static String titleCase(String s) {
        String rv = new String();
        StringTokenizer strtok = new StringTokenizer(s);
        // handle the potential null error: (should really output a runtime warning here)
        if(s == null) return null;
        while(strtok.hasMoreTokens()) {
            String word = strtok.nextToken();
            String firstLetter = word.substring(0,1);
            String restOfWord = word.substring(1);
            rv.concat(firstLetter.toUpperCase() + restOfWord.toLowerCase());
        }
        return rv;
    }

2 个答案:

答案 0 :(得分:4)

字符串在Java中是不可变的,一旦你声明rv为“”(= new String())它就不会改变,除非你为它分配一个新的String。 您可以通过以下方式替换concat行:

rv = rv.concat(firstLetter.toUpperCase() + restOfWord.toLowerCase());

或者更好的是,使用StringBuilder而不是String(未测试):

StringBuilder rv = new StringBuilder();
// [...]
rv.append(firstLetter.toUpperCase()).append(restOfWord.toLowerCase());
// [...]
return rv.toString();

答案 1 :(得分:0)