我正在尝试从字符串中删除所有非字母数字字符。
我尝试将a <-70
outer <- function(){
a <<- 20
inner <- function(){
a <<- 30
print(a)
} # end of inner function
inner()
print(a)
} # end of outer function
与正则表达式一起使用,如下所示:
> outer()
30
20
> a
70
D / debug:测试。 ,取代
D / debug:测试。 ,取代
为什么标点字符仍然存在?如何只获取字母数字字符?
答案 0 :(得分:30)
您需要创建一个正则表达式对象
var answer = "Test. ,replace"
println(answer)
answer = answer.replace("[^A-Za-z0-9 ]", "") // doesn't work
println(answer)
val re = Regex("[^A-Za-z0-9 ]")
answer = re.replace(answer, "") // works
println(answer)
在线试用:https://try.kotlinlang.org/#/UserProjects/ttqm0r6lisi743f2dltveid1u9/2olerk6jvb10l03q6bkk1lapjn
答案 1 :(得分:10)
像这样的Kotlin标准库很漂亮。只需将String.filter与Char.isLetterOrDigit结合使用,就像这样:
public Class1 GetAppSettings()
{
Class1 result = new Class1();
// Code does something
return result;
}
public Class2 GetAppSettings()
{
Class2 result = new Class2();
// Code does something
return result;
}
答案 2 :(得分:3)
您需要创建一个正则表达式,这可以在调用str.toRegex()
之前通过replace
完成
val string = "AsAABa3a35e8tfyz.a6ax7xe"
string = string.replace(("[^\\d.]").toRegex(), "")
结果:3358.67
如果您需要处理单词W和空格
var string = "Test in@@ #Kot$#lin FaaFS@@#$%^&StraßeFe.__525448=="
string = string.replace(("[^\\w\\d ]").toRegex(), "")
println(string)
结果:在Kotlin FaaFSStraeFe__525448中进行测试
答案 3 :(得分:2)
Kotlin认为您可以替换字符串,而不是regex,因此您应该提供一些帮助以regex作为第一个参数来选择正确的方法签名。
显式使用Regex类型而不是字符串:
"[^A-Za-z0-9 ]".toRegex()
或告诉您正在传递命名的regex参数:
answer.replace(regex = "[^A-Za-z0-9 ]", "")
在这种情况下,除非您传递真实的正则表达式而不是字符串,否则kotlin不会编译
答案 4 :(得分:0)
您可以尝试不使用正则表达式,例如:
val ranges = ('0'..'9') + ('a'..'z') + ('A'..'Z')
val escaped = "1! at __ 2? at 345..0986 ZOk".filter { it in ranges }
答案 5 :(得分:0)
我发现这更加简洁和易于维护。可能是先前的答案是在添加这些扩展名之前做出的吗?
val alphaNumericString = someString.toCharArray()
.filter { it.isLetterOrDigit() }
.joinToString(separator = "")
答案 6 :(得分:0)
我认为这是最简单的方法:
fun String.toNumericString() = this.filter { it.isDigit() }
答案 7 :(得分:0)
fun String.digitsOnly(): String{
val regex = Regex("[^0-9]")
return regex.replace(this, "")
}
fun String.alphaNumericOnly(): String{
val regex = Regex("[^A-Za-z0-9 ]")
return regex.replace(this, "")
}
用法:
val alphaNumeric = "my string #$".alphaNumericOnly()