olfek
olfek

Reputation: 3520

Java String class replaceAll method missing

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??

Upvotes: 56

Views: 39875

Answers (3)

zsmb13
zsmb13

Reputation: 89608

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"

Upvotes: 81

Zoe - Save the data dump
Zoe - Save the data dump

Reputation: 28268

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");

Upvotes: 20

Zinc
Zinc

Reputation: 1002

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.

Upvotes: 6

Related Questions