48

I'm having a very weird issue right now, the replaceAll method is missing from the String object.

JDK version: 1.8.0
Android Studio version: 3.1.3
Kotlin version: 1.2

enter image description here

It hasn't been removed, so whats going on here??

olfek
  • 3,210
  • 4
  • 33
  • 49

3 Answers3

76

You can do this with just replace in Kotlin:

"foo and foo".replace("foo", "bar") // "bar and bar"

Note that the call above replaces the literal strings, if you need a Regex as the first parameter you can do either of the following:

"foo and bar".replace("[abcd]".toRegex(), "x") // "foo xnx xxr"
"foo and bar".replace(Regex("[abcd]"), "x")    // "foo xnx xxr"
zsmb13
  • 85,752
  • 11
  • 221
  • 226
  • 1
    What do I do if I replace with `$1` like here? https://stackoverflow.com/a/40487511/2111778 – xjcl Nov 23 '20 at 23:30
18

Kotlin has it's own String class. All the replace methods are just replace.

replaceAll in Java uses regex, so I assume your goal is using regex. To do this, just use a regex object when you pass to replace:

sb.toString().replace("your regex".toRegex(), "replacement");

If you don't have regex (and that's wrong), don't call .toRegex():

sb.toString().replace("replace target", "replacement");
Zoe
  • 27,060
  • 21
  • 118
  • 148
6

Kotlin has replaceAll as replace:

replace in Kotlin

actual fun String.replace(
oldChar: Char, 
newChar: Char, 
ignoreCase: Boolean = false
): String (source)

Returns a new string with all occurrences of oldChar replaced with newChar.

Zinc
  • 1,002
  • 12
  • 18