Строка с заглавной буквы в соответствии со словарем
Я хочу программно использовать слова в строке в зависимости от словаря (!). Это должно быть похоже на соглашение об именах переменных и методов 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)