Чтобы удалить все пробелы между буквами ASCII, вы можете использовать
result = result.trim().replaceAll("(?<=[A-Za-z])\\s+(?=[A-Za-z])", "");
Или, чтобы сопоставить любые пробелы Юникода между любыми буквами Юникода, вы можете использовать
result = result.trim().replaceAll("(?<=\\p{L})\\s+(?=\\p{L})", "");
Обратите внимание, что в Javaнеобходимо добавить к шаблону (?U)
, если вы хотите, чтобы \s
соответствовал любым пробелам Unicode (сокращенные классы символов по умолчанию не поддерживают Unicode в Java, они в Android).
См. regex demo
Подробности
(?<=\\p{L})
- положительный взгляд сзади, который соответствует местоположению внутри строки, которому непосредственно предшествует любойБуква Unicode \\s+
- 1+ пробелов (?=\\p{L})
- положительный прогноз, который соответствует расположению внутри строки, за которым сразу следует любая буква Unicode.