【问题标题】:Get string between two strings Swift获取两个字符串之间的字符串Swift
【发布时间】:2018-09-26 07:08:52
【问题描述】:

我有以下字符串:

"Notes[9219:1224244] [BoringSSL] Function boringssl_context_get_peer_sct_list: line 1757 received sct extension length is less than sct data length [[["encendedor","lighter",null,null,1]],null,"en"]"

我只想提取第一次出现引号之间的字符串,在本例中为“enendedor”。 我尝试了下面的代码,我从this question. 理解的

//finalTrans has the full string that needs to be shortened
let finalTrans = (String(data: data, encoding: .utf8)!)
let regex = try! NSRegularExpression(pattern:"[[[(.*?),", options: [])
var results = [String]()
regex.enumerateMatches(in: finalTrans, options: [], range: NSMakeRange(0, finalTrans.utf16.count)) { result, flags, stop in
                if let r = result?.range(at: 1), let range = Range(r, in: finalTrans) {
                results.append(String(finalTrans[range]))
                }
            }
//prints the new string
 print(results)

我目前收到此错误:

Thread 6: Fatal error: 'try!' expression unexpectedly raised an error: Error Domain=NSCocoaErrorDomain Code=2048 "The value “[[[(.*?),” is invalid." UserInfo={NSInvalidValue=[[[(.*?),}

如何正确提取此字符串?谢谢您的帮助。

【问题讨论】:

标签: swift string substring


【解决方案1】:

您还可以使用范围在两个字符串之间进行切片。

extension String {

    func slice(from: String, to: String) -> String? {

        return (range(of: from)?.upperBound).flatMap { substringFrom in
            (range(of: to, range: substringFrom..<endIndex)?.lowerBound).map { substringTo in
                String(self[substringFrom..<substringTo])
            }
        }
    }
}

let slicedString = yourString.slice(from: "\"", to: "\"") // Optional("encendedor")

【讨论】:

    【解决方案2】:

    使用components(separatedBy:):

    var str = "Notes[9219:1224244] [BoringSSL] Function boringssl_context_get_peer_sct_list: line 1757 received sct extension length is less than sct data length [[[\"encendedor\",\"lighter\",null,null,1]],null,\"en\"]"
    
    str.components(separatedBy: "\"")[1] // "encendedor"
    

    【讨论】:

      猜你喜欢
      • 2012-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2018-11-16
      相关资源
      最近更新 更多