我有形式为 string \ string 示例的字符串
"some sting with random length\233"
我想删除最后一个\
并获取它之后的值,所以结果将是
"some sting with random length"
"233"
我试过这段代码,但它不起作用
let regex = try! NSRegularExpression(pattern: "\\\s*(\\S[^,]*)$")
if let match = regex.firstMatch(in: string, range: string.nsRange) {
let result = string.substring(with: match.rangeAt(1))
}
您没有正确地将如何在字符串中最后一次出现字符后获取子字符串中的模式: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
}
Swift 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
是 a String.SubSequence
,它可以在很多地方代替 a 使用String
。如有必要,创建一个真正的字符串:
let prefix = String(string[..<r.lowerBound])
let suffix = String(string[r.upperBound...])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句