Строка с заглавной буквы в соответствии со словарем

Я хочу программно использовать слова в строке в зависимости от словаря (!). Это должно быть похоже на соглашение об именах переменных и методов Java в CamelCase, Дана строка в нижнем регистре. Найдите наиболее вероятный случай соглашения Java.

Я начал here с существующим файлом словаря и классом для проверки, является ли данный String является частью словаря или нет. Сложность в том, чтобы найти правильное или наиболее вероятное substrings, Как бы вы улучшили это?

public String capitalizeWords(String text)
{
    text = text.toLowerCase();
    StringBuilder capitalizedWordBuilder = new StringBuilder();

    int firstWordLength = text.length();
    int beginIndex = 0;

    while (true)
    {
        String subText = text.substring(beginIndex, firstWordLength);

        if (contains(subText))
        {
            String word = capitalizeFirst(subText);
            capitalizedWordBuilder.append(word);
            beginIndex += word.length();
            firstWordLength = text.length() + 1;
        }

        firstWordLength--;

        if (beginIndex == firstWordLength && beginIndex == text.length())
        {
            String capitalized = capitalizedWordBuilder.toString();
            return deCapitalizeFirst(capitalized);
        }
    }
}

private String capitalizeFirst(String text)
{
    if (text.length() < 2)
    {
        return text;
    }

    return Character.toUpperCase(text.charAt(0)) + text.substring(1);
}

private String deCapitalizeFirst(String text)
{
    if (text.length() < 2)
    {
        return text;
    }

    return Character.toLowerCase(text.charAt(0)) + text.substring(1);
}

Пример прогонов:
javaisawesome -> javaIsAwesome (Хорошо)
thisisastring -> thisIsAstrIng (Bad)

0 ответов

Другие вопросы по тегам