java - 在正斜杠之前删除反斜杠
问题描述
上下文: GoogleBooks API 正在返回意外的缩略图网址
好的,所以我找到了我在那个问题中遇到的问题的原因
我发现从 googlebooks api 返回的 url 是这样的:
http:/\/books.google.com\/books\/content?id=0DwKEBD5ZBUC&printsec=frontcover&img=1&zoom=5&source=gbs_api
转到那个 url 会返回一个错误,但是如果我用“/”替换了“\ /”,它将返回正确的 url
是否有类似 java/kotlin 正则表达式的东西可以将其更改http:/\/books.google.com\/
为这个http://books.google.com/
(我在 python 中知道一些正则表达式,但我在 java/kotlin 中一无所知)
谢谢你
解决方案
您可以使用三引号字符串文字(充当原始字符串文字,其中反斜杠被视为文字字符而不是字符串转义序列的一部分) + kotlin.text.replace
:
val text = """http:/\/books.google.com\/books\/content?id=0DwKEBD5ZBUC&printsec=frontcover&img=1&zoom=5&source=gbs_api"""
print(text.replace("""\/""", "/"))
输出:
http://books.google.com/books/content?id=0DwKEBD5ZBUC&printsec=frontcover&img=1&zoom=5&source=gbs_api
请参阅Kotlin 演示。
注意:您需要将常规字符串文字中的反斜杠加倍:
print(text.replace("\\/", "/"))
如果您需要在正则表达式中使用这种“反斜杠 + 斜杠”模式,您将需要在三引号字符串文字中使用 2 个反斜杠,在常规字符串文字中使用 4 个反斜杠:
print(text.replace("""\\/""".toRegex(), "/"))
print(text.replace("\\\\/".toRegex(), "/"))
注意:没有必要/
在 Kotlin 正则表达式声明中转义正斜杠,因为它不是特殊的正则表达式元字符,并且 Kotlin 正则表达式是用字符串文字定义的,而不是正则表达式文字,因此不需要正则表达式分隔符(/
通常用作正则表达式支持此表示法的环境中的分隔符字符)。
推荐阅读
- sitefinity - Sitefinity - 删除后端屏幕中的翻译列
- stripe-payments - 如何检查付款单是否打开?
- javascript - 我怎样才能让我的轮播在 Angular 8 中工作
- php - 无法让我的 php 为联系表单工作
- java - response.body().getResponseCode()==200 - 无响应
- javascript - Math.floor() 在 javascript 中向下舍入到最接近的 0.5
- python - 如何使用 np.arange 按系列类型划分系列
- java - 转换地图
到地图 > 分组依据后 - memory-management - 如何在 Cloud Run for GKE pod 中配置不同的 CPU/内存限制和请求?
- javascript - VueJS:如何成功地将数组从子组件传递到父组件