String.replaceAll
未运行,并且在Kotlin中不受支持。因此,我建议一个演示示例,希望对您有所帮助。
var string = "vsdhfnmsdbvfuf121535435aewr"
string.replace("[^0-9]".toRegex(), "")
答案 0 :(得分:23)
您还可以利用Kotlin的String.filter:
var string = "vsdhfnmsdbvfuf121535435aewr"
var result = string.filter { it.isDigit() }
答案 1 :(得分:1)
您的代码运行正常。这里string
是不可变的。因此,它的价值无法改变。但是您可以将另一个变量分配给替换的字符串。
fun main(args: Array<String>) {
var string = "vsdhfnmsdbvfuf121535435aewr"
var res = string.replace("[^0-9]".toRegex(), "")
println(res)
}
答案 2 :(得分:1)
replace
方法返回一个新的String
,而不修改基数。您可以尝试使用此here,它将为您服务。
var s1 = "vsdhfnmsdbvfuf121535435aewr"
var s2 = s1.replace("[^0-9]".toRegex(), "")
print(s2)
答案 3 :(得分:1)
replace
不会使字符串str
发生突变,这就是为什么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]
答案 4 :(得分:0)
replace函数不会修改您的字符串,但会返回一个新字符串。您的代码会很好:
val result = replace("[^0-9]".toRegex(), "")
答案 5 :(得分:0)
尝试以下示例:
代码
try {
val p = Pattern.compile("\\d+")
var m = p.matcher("string1234more567string890")
while (m.find()) {
System.out.println(m.group())
}
}catch (ex:java.lang.Exception){
}
答案 6 :(得分:0)
在某些情况下,例如文本中包含格式化的金额,上述答案可能会失败。例如,如果文本为“ Rs.1,00,000.00 ”,而我们仅过滤。和 digit ,则得到的输出为.100000.00这将是错误的金额。因此最好先提取数字之间的字符串,然后过滤数字和点。
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())
答案 7 :(得分:0)
试试这个我们会得到结果
val digit:Int = Regex("[^0-9]").replace(bindAyatSearch.ayatSearchSp.selectedItem.toString(), "").toInt()