gpt4 book ai didi

android - 字符串末尾的正则表达式替换在 Kotlin for Android 中不起作用

转载 作者:行者123 更新时间:2023-12-04 08:38:47 24 4
gpt4 key购买 nike

我正在尝试在 Kotlin for Android 中编写几行,用单个斜杠替换 url 末尾的 0、1 或多个斜杠,但它不起作用。
下面的代码:

val firstUrl = "http://my.url.com/"
val expectedResult = "http://my.url.com/" // <-- same URL

val result = firstUrl.replace(Regex("(/*)$"), "/")

// Expected result:
// > result == "http://my.url.com/"
// Got result:
// > result == "http://my.url.com//"

assert(result == expectedResult)

// Throws:
// > java.lang.AssertionError: Assertion failed
// > ...
// > ...
我已经在 J​​avaScript 中测试了相同的代码(使用 NodeJS 运行)并且它可以工作。
我的正则表达式中有任何错误吗?
我正在使用 Kotlin 1.4.10:
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.4.10"
安卓版本:8.0.0
型号:三星 Galaxy A5 2017

最佳答案

您可以使用 replaceFirst并考虑从正则表达式中删除捕获括号,因为您没有使用捕获的值:

val firstUrl = "http://my.url.com/"
val result = firstUrl.replaceFirst(Regex("/*$"), "/")
print(result)
Kotlin demo .
使用时 replaceFirst , /*$只会在字符串末尾匹配一次,并且只有一个 /每次运行该方法时都会添加。

关于android - 字符串末尾的正则表达式替换在 Kotlin for Android 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64663530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com