String.replaceAll
在Kotlin中不可用且不被支持。因此我建议提供一个演示示例,希望它能有所帮助。
var string = "vsdhfnmsdbvfuf121535435aewr"
string.replace("[^0-9]".toRegex(), "")
您也可以利用Kotlin的String.filter功能:
var string = "vsdhfnmsdbvfuf121535435aewr"
var result = string.filter { it.isDigit() }
var result = string.filter{ it.isDigit() || it == '.'}
。 - jj.Char
类上使用扩展函数进行此操作对于可读性非常有帮助。 - Vít Kapitolastring
是不可变的。因此,它的值不能被更改。但是,您可以将另一个变量分配给替换后的字符串。fun main(args: Array<String>) {
var string = "vsdhfnmsdbvfuf121535435aewr"
var res = string.replace("[^0-9]".toRegex(), "")
println(res)
}
fun String.getAmount(): String {
return substring(indexOfFirst { it.isDigit() }, indexOfLast { it.isDigit() } + 1)
.filter { it.isDigit() || it == '.' }
}
以下案例将使用上述代码进行覆盖
println("Rs. 123".getAmount())
println("Rs. 123.23".getAmount())
println("Rs. 123.23/-".getAmount())
println("INR123.23".getAmount())
println("123.23INR".getAmount())
println("$100,000.00".getAmount())
println("Rs.100,000.00".getAmount())
replace
不会改变字符串 str
,这就是为什么它适用于不可变的字符串 (val
)。
val str = "vsdhfnmsdbvfuf121535435aewr"
val num = str.replace(Regex("[^0-9]"), "")
println(num)
输出:
4545121535435
由于您的问题标题为“数字”:如果您在字符串中散布了多个数字,则可以使用Regex.findAll。 这也是一种更安全的解决方案,因为如果您只删除数字周围的内容,可能会把“a1b2c3”解释为“123”,而不是 “[1, 2, 3]”。
val str = "vsdhfn4545msdbvfuf121535435aewr"
val numbers = Regex("[0-9]+").findAll(str)
.map(MatchResult::value)
.toList()
println(numbers)
输出:
[4545,121535435]
如果你想要提取数字,这里是解决方案
var string = "vsdhfnmsdbvfuf121535435aewr"
var result = string.filter { it.isLetter() }
不要使用.isdigit,而是使用.isletter,这样就可以正常工作了。
replace
方法返回一个新的 String
,而不是修改原有字符串。你可以在这里尝试一下,这对你会很有用。
var s1 = "vsdhfnmsdbvfuf121535435aewr"
var s2 = s1.replace("[^0-9]".toRegex(), "")
print(s2)
replace函数不会修改原始字符串,而是返回一个新的字符串。你的代码将正常运行:
val result = replace("[^0-9]".toRegex(), "")
代码
try {
val p = Pattern.compile("\\d+")
var m = p.matcher("string1234more567string890")
while (m.find()) {
System.out.println(m.group())
}
}catch (ex:java.lang.Exception){
}
val digit:Int = Regex("[^0-9]").replace(bindAyatSearch.ayatSearchSp.selectedItem.toString(), "").toInt()