您沒有正確地將How to get substring after last occurrence of character in string: Swift IOS中的模式適用於您的案例。 逗號的兩個實例必須由反斜槓, 被替換,並且必須是「雙重逸出」:
let regex = try! NSRegularExpression(pattern: "\\\\\\s*(\\S[^\\\\]*)$")
(一旦被解釋爲在正則表達式模式反斜線和 再次在一個Swift字符串文字的定義)。
然而,一個簡單的解決方案是找到 反斜線最後一次出現,並提取該位置的後綴:
let string = "some sting with random length\\233"
let separator = "\\" // A single(!) backslash
if let r = string.range(of: separator, options: .backwards) {
let prefix = string.substring(to: r.lowerBound)
let suffix = string.substring(from: r.upperBound)
print(prefix) // some sting with random length
print(suffix) // 233
}
更新斯威夫特4:
if let r = string.range(of: separator, options: .backwards) {
let prefix = string[..<r.lowerBound]
let suffix = string[r.upperBound...]
print(prefix) // some sting with random length
print(suffix) // 233
}
prefix
和suffix
是String.SubSequence
,其可以用於 中許多地方而不是String
。如有必要,創建一個真正 字符串:
let prefix = String(string[..<r.lowerBound])
let suffix = String(string[r.upperBound...])
對不起,你的意思是你'「有些刺痛隨機長度\\ 233」'?反斜槓必須在字符串文字中加倍以表示單個文字反斜槓。 –
不,只有一個\。我嘗試了完全相同的解決方案,你標記和它不工作,這就是爲什麼我發佈的問題 –
事情是'2'實際上是'2'。你的*字符串*不包含反斜槓,因此沒有任何東西需要分割或匹配。同樣,一個文字「''''應該在Swift字符串文字中用''''定義。這就是我可以在這裏說的。 –