Поскольку вы используете split()
, который принимает регулярное выражение, может показаться, что использование регулярного выражения является допустимым решением, поэтому используйте его:
replaceAll("(\\w+)(\\W+)(\\w+)", "$3$2$1")
Объяснение
(\\w+) Match first word, and capture it as group 1
(\\W+) Match the characters between the 2 words, and capture them as group 2
(\\w+) Match second word, and capture it as group 3
$3$2$1 Replace the above with the 3 groups in reverse order
Пример
System.out.println("hi how are you doing today jane".replaceAll("(\\w+)(\\W+)(\\w+)", "$3$2$1"));
Вывод
how hi you are today doing jane
Примечание. Поскольку ваш код используется split("\\s+")
, ваше определениеслова - это последовательность непробельных символов.Чтобы использовать это определение слова, измените регулярное выражение на:
replaceAll("(\\S+)(\\s+)(\\S+)", "$3$2$1")