静态编程语言是否支持已命名的regex组?
命名的regex组看起来像这样:(?
从Kotlin 1.4开始,您需要将组的结果转换为
匹配名称组集合
:
val groups = """(\w+?)(?<num>\d+)""".toRegex().matchEntire("area51")!!.groups as? MatchNamedGroupCollection
if (groups != null) {
println(groups.get("num")?.value)
}
正如@Vadzim正确注意到的,您必须使用
kotlin-stdlib-jdk8
而不是kotlin-stdlib
:
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
}
这里有一个很好的解释
从静态编程语言1.0开始,Regex
类不提供访问MatchGroupCollection
中匹配的命名组的方法,因为标准库只能使用JDK6中可用的regex api,这也不支持命名组。
如果您的目标是JDK8,您可以使用java.util.regex.Pattern
和java.util.regex.Matcher
类。后者提供了group
方法来获得命名捕获组匹配的结果。
根据这个讨论,,
这将在Kotlin 1.1中得到支持。https://youtrack.jetbrains.com/issue/KT-12753
Kotlin 1.1 EAP已经可以试用。
"""(\w+?)(?<num>\d+)""".toRegex().matchEntire("area51")!!.groups["num"]!!.value
您必须使用kotlin-stdlib-jre8
。
我正在尝试使用柯特林 V1.2.70、Gradle V4.10.1 和 Java 11。使用 gradle 编译项目时,出现错误,指出“未知的 JVM 目标版本:11。支持的版本:1.6,1.8“。 Kotlin 编译器是否支持 Java 11(生成与 Java 11 JVM 兼容的代码)?如果是这样,如何使用渐变配置?
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
这两个代码片段有什么区别?以及如何决定使用哪一个? 和 有了这两个代码,我可以像这样通过索引访问它
上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我
刚开始和Kotlin合作我很喜欢但是。。。我无法理解这种语言中的列表和数组。我对编程并不陌生,也不需要解释数组是什么。我不明白的是。 > 列表和数组之间有什么区别?它们看起来非常相似,您可以使用[索引]访问它们,也可以以几乎相同的方式使用它们。如果一个列表是不可变的,那么它们就更加相同了,所以。。。有什么区别?假设列表不是链表,它们都在O(1)访问时间内工作。 如果我使用列表;可变和不可变之间有什