我的字符串是字符串\ string example
"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))
}
答案 0 :(得分:2)
您没有正确地将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
}
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
是String.SubSequence
,可以使用
在许多地方而不是String
。如有必要,请创建真实
字符串:
let prefix = String(string[..<r.lowerBound])
let suffix = String(string[r.upperBound...])
答案 1 :(得分:0)
你可以用正则表达式做到这一点,但我认为这个解决方案更好:
yourString.components(separatedBy: "\\").last!
它将\
的字符串拆分为分隔符并获取最后一次拆分。