Java toTitleCase функция - PullRequest
       0

Java toTitleCase функция

2 голосов
/ 15 февраля 2012

У меня есть эта 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 ]

4 голосов
/ 15 февраля 2012

Строки являются неизменяемыми в Java, после того как вы объявили rv как "" (= new 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();
0 голосов
/ 16 февраля 2012

Я бы использовал WordUtils.capitalize или WordUtils.capitalizeFully.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...