Это один из тех случаев, когда вы должны были просто использовать регулярное выражение
public static void main(String[] args) {
System.out.println("Enter the sentence you want to translate");
String input = scan.nextLine();
StringBuilder builder = new StringBuilder();
for (String word : input.toUpperCase().split("\\s+")) {
builder.append(translate(word)).append(' ');
}
String translated = builder.toString().trim();
System.out.println(translated);
}
public static String translate(String word) {
return word.replaceAll("(?i)\\b([^aeiou]+)(\\w+)", "$2-$1ay");
}
Простым английским языком: разбейте предложение на слова, возьмите каждое слово и переместите начальные согласные в конец с присоединенным «ay», а затем соедините слова.
П.С .: Поскольку вы новичок в этом, я должен объяснить больше. В основном в Java существуют специальные инструменты, предназначенные специально для манипулирования текстом. Два из них являются регулярными выражениями и StringBuilder
. Самый простой способ создать что-то похожее на переводчик Pig Latin - это разбить строку на слова: String.split()
разбивает строку, \\s+
означает разбиение там, где есть пробелы. Затем вы преобразуете слова, используя регулярные выражения, и соединяете их вместе, используя StringBuilder, который похож на строку, которую вы можете изменить.
Я использовал регулярное выражение (?i)\\b([^aeiou]+)(\\w+)", "$2-$1ay
, что означает: начиная с начала слова (\\b
), найдите буквы, которые не являются (^
) гласными ([aeiou]+
), затем найдите все буквы после них (\\w+
). Когда вы найдете эти две группы ($ 1 и $ 2), переместите $ 1 в конец ($2-$1
) и добавьте ay
после него ($2-$1ay
).