Этот ответ предполагает, что это домашняя работа.Обычно я просто рекомендовал бы использовать здесь полное регулярное выражение.
Итак, у вас есть цикл while, и это хорошо.Начните с извлечения метода с именем "isKeywordCharacter":
while ( isKeywordCharacter(string.charAt(i)) ) {
//...
}
Тогда возникает вопрос, какова лучшая реализация этого метода:
public boolean isKeywordCharacter(char character) {
return //?
}
Наиболее прозрачным и эффективным может быть что-то вродеэто:
return (character >= 'a' && character <= 'z') || ...;
В то время как наиболее самодокументированное может быть что-то вроде этого:
return String.valueOf(character).matches("[a-zA-Z0-9]");