背景關系。 GoogleBooks API檢索到意外的縮略圖網址
。好了,我找到了我在那個問題中遇到的問題的原因
。我發現從googlebooks api回傳的url是這樣的:
http://books.google.com/books/content?id=0DwKEBD5ZBUC&printsec=frontcover&img=1&zoom=5&source=gbs_api
進入該網址會回傳一個錯誤,但如果我把"/"替換成"/",就會回傳正確的網址
。是否有類似于java/kotlin的重組函式,可以將這個http://books.google.com/改為這個http://books.google.com/?
(我知道一點python中的regex,但我對java/kotlin一無所知)
謝謝你
uj5u.com熱心網友回復:
你可以使用三引號的字串字元(作為原始的字串字元,其中反斜線被視為字面字符,而不是字串轉義序列的一部分) 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(""/""/span>, "/"/span>)
輸出:
http://books.google.com/books/content?id=0DwKEBD5ZBUC&printsec=frontcover&img=1&zoom=5&source=gbs_api
請看Kotlin演示。
注意:你需要將正則字串字面中的反斜線加倍:
print(text.replace("/", "/")
如果你需要在regex中使用這個 "反斜線 斜線 "模式,你將需要在三段式字串字面中使用2個反斜線,在普通字串字面中使用4個反斜線:
print(text.replace(""/""/span>.toRegex(), "/"/span>)
print(text.replace("/"/span>.toRegex(), "/"/span>)
注意:在Kotlin regex宣告中不需要轉義/正斜杠,因為它不是一個特殊的regex元字符,而且Kotlin regexps是用字串字面定義的,而不是regex字面,因此不需要regex定界符(在支持這種符號的環境中,/經常被用作regex定界符)。
uj5u.com熱心網友回復:
你可以匹配協議,然后把反斜杠后面的正斜杠只替換成正斜杠
https?:?/?/S
Java中的模式
String regex = "https? :?/?S "。
以Java為例:
Stringregex = "https? :?/?S "。
String string = "http://books.google. com/books/content?id=0DwKEBD5ZBUC& printsec=frontcover& img=1& zoom=5& source=gbs_api"。
if(string.matches(regex)) {
System.out.println(string.replace("/", "/") )。
}
輸出
http://books.google.com/books/content?id=0DwKEBD5ZBUC&printsec=frontcover&img=1&zoom=5&source=gbs_api
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/323796.html
標籤:
上一篇:如何用正則表達法替換多個模式
