У меня сейчас очень странная проблема: метод replaceAll отсутствует в объекте String.
Версия JDK: 1.8.0
Версия Android Studio: 3.1.3
Версия Kotlin: 1.2
Он не был удален, так что здесь происходит ??
@HalayemAnis Java
@HalayemAnis, это Котлин. Kotlin - это язык JVM, что означает, что он использует API Java (причина, по которой он помечен как Java)
@daka Это kotlin String, а не java String. Kotlin имеет только replace




Вы можете сделать это с помощью replace в Котлине:
"foo and foo".replace("foo", "bar") // "bar and bar"
Обратите внимание, что приведенный выше вызов заменяет буквальные строки, если вам нужен Regex в качестве первого параметра, вы можете выполнить одно из следующих действий:
"foo and bar".replace("[abcd]".toRegex(), "x") // "foo xnx xxr"
"foo and bar".replace(Regex("[abcd]"), "x") // "foo xnx xxr"
Что мне делать, если я заменяю на $1, как здесь? stackoverflow.com/a/40487511/2111778
В Kotlin есть replaceAll как replace:
actual fun String.replace(
oldChar: Char,
newChar: Char,
ignoreCase: Boolean = false
): String (source)
Возвращает новую строку, в которой все вхождения oldChar заменены на newChar.
У Kotlin есть собственный класс String. Все методы замены - это просто replace.
replaceAll в Java использует регулярное выражение, поэтому я предполагаю, что ваша цель - использовать регулярное выражение. Для этого просто используйте объект регулярного выражения при переходе для замены:
sb.toString().replace("your regex".toRegex(), "replacement");
Если у вас нет регулярного выражения (а это неправильно), не вызывайте .toRegex():
sb.toString().replace("replace target", "replacement");
Java или JavaScript?