Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin Can';t用匹配组替换文本:ArrayIndexOutOfBoundsException:length=2;指数=2_Kotlin - Fatal编程技术网

Kotlin Can';t用匹配组替换文本:ArrayIndexOutOfBoundsException:length=2;指数=2

Kotlin Can';t用匹配组替换文本:ArrayIndexOutOfBoundsException:length=2;指数=2,kotlin,Kotlin,在我的Kotlin项目中: 我有以下文字: DATA: 30-11-19 我只需要提取日期 我试试这个: private fun testDates() { val DATE_REGEXP = ".*?\\d{2}-\\d{2}-\\d{2}.*" val someText = "DATA: 30-11-19" if (DATE_REGEXP.toRegex().matches(someText)) { val rep

在我的Kotlin项目中: 我有以下文字:

DATA: 30-11-19 
我只需要提取日期

我试试这个:

 private fun testDates() {
        val DATE_REGEXP = ".*?\\d{2}-\\d{2}-\\d{2}.*"
        val someText = "DATA: 30-11-19"
        if (DATE_REGEXP.toRegex().matches(someText)) {
            val replace = someText.replace(DATE_REGEXP.toRegex(), "$1");
            Debug.d(TAG, "testDates_replace = $replace")
        }
    }
但我得到运行时错误:

01-14 18:50:29.862 E/AndroidRuntime(31161): Caused by: java.lang.reflect.InvocationTargetException
01-14 18:50:29.862 E/AndroidRuntime(31161):     at java.lang.reflect.Constructor.newInstance(Native Method)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:267)
01-14 18:50:29.862 E/AndroidRuntime(31161):     ... 16 more
01-14 18:50:29.862 E/AndroidRuntime(31161): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
01-14 18:50:29.862 E/AndroidRuntime(31161):     at java.util.regex.Matcher.group(Matcher.java:579)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at java.util.regex.Matcher.appendEvaluated(Matcher.java:138)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at java.util.regex.Matcher.appendReplacement(Matcher.java:111)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at java.util.regex.Matcher.replaceAll(Matcher.java:319)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at kotlin.text.Regex.replace(Regex.kt:143)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at com.myproject.testDates(ScanCheckViewModel.kt:817)
01-14 18:50:29.862 E/AndroidRuntime(31161):     at com.myproject.<init>(ScanCheckViewModel.kt:98)
01-14 18:50:29.862 E/AndroidRuntime(31161):     ... 18 more
01-14 18:50:29.862 E/AndroidRuntime(31161):由以下原因引起:java.lang.reflect.InvocationTargetException
01-14 18:50:29.862 E/AndroidRuntime(31161):位于java.lang.reflect.Constructor.newInstance(本机方法)
01-14 18:50:29.862 E/AndroidRuntime(31161):位于androidx.lifecycle.ViewModelProvider$AndroidViewModelFactory.create(ViewModelProvider.java:267)
01-14 18:50:29.862东/安德律伦time(31161):。。。还有16个
01-14 18:50:29.862 E/AndroidRuntime(31161):由以下原因引起:java.lang.ArrayIndexOutOfBoundsException:length=2;指数=2
01-14 18:50:29.862e/AndroidRuntime(31161):位于java.util.regex.Matcher.group(Matcher.java:579)
01-14 18:50:29.862e/AndroidRuntime(31161):位于java.util.regex.Matcher.appendEvaluated(Matcher.java:138)
01-14 18:50:29.862e/AndroidRuntime(31161):位于java.util.regex.Matcher.appendReplacement(Matcher.java:111)
01-14 18:50:29.862 E/AndroidRuntime(31161):位于java.util.regex.Matcher.replaceAll(Matcher.java:319)
01-14 18:50:29.862 E/AndroidRuntime(31161):在kotlin.text.Regex.replace(Regex.kt:143)
01-14 18:50:29.862 E/AndroidRuntime(31161):在com.myproject.testDates(ScanCheckViewModel.kt:817)
01-14 18:50:29.862 E/AndroidRuntime(31161):在com.myproject上
01-14 18:50:29.862东/安德律伦time(31161):。。。还有18个

<1
表示由
()
捕获的第二组匹配,因此需要添加一对以便使用

.*?(\\d{2})-(\\d{2})-\\d{2}.*
   ^      ^

注意:默认情况下,
$0
捕获整个匹配。

此帮助:“.*?(\\d{2}-\\d{2}-\\d{2})。*”。我必须补充一点groups@a_subscriber我很高兴能帮上忙。你的问题很详细,但我今天没票了,所以以后再说。