当字符串充满特殊字符时,如何在swift中提取双引号内的特定单词?

当字符串充满特殊字符时,如何在swift中提取双引号内的特定单词?,swift,Swift,根据给定数据,即- 会话id=“8b55ed3af15dcf154aaaedd1bb667489”/ip地址=“103.16.104.24”/last\u activity=“1460548532” 如何提取会话id、ip地址和上次活动的值。我尝试了下面的代码,但它只适用于简单字符串,当我指定给定数据时,它会显示错误 var testString: String = "session_id="8b55ed3af15dcf154aaaedd1bb667489"/ip_address="103.16

根据给定数据,即-

会话id=“8b55ed3af15dcf154aaaedd1bb667489”/ip地址=“103.16.104.24”/last\u activity=“1460548532”

如何提取会话id、ip地址和上次活动的值。我尝试了下面的代码,但它只适用于简单字符串,当我指定给定数据时,它会显示错误

var testString: String = "session_id="8b55ed3af15dcf154aaaedd1bb667489"/ip_address="103.16.104.24"/last_activity="1460548532""

var data: String = testString
let extractedStringData = data.componentsSeparatedByString("/")

var session_id: String = extractedStringData[0]
var ip_address: String? = extractedStringData[1]
var last_activity: String? = extractedStringData [2]
任何建议都会有帮助

谢谢你

也许有一种更实用的方法可以做到这一点,但这是可行的:

var testString: String = "session_id=\"8b55ed3af15dcf154aaaedd1bb667489\"/ip_address=\"103.16.104.24\"/last_activity=\"1460548532\""

let pairs: [String] = testString.characters.split("/").map(String.init)
var values = [String:String]()
pairs.forEach({
    let pair: [String] = $0.characters.split("=").map(String.init)
    values[pair[0]] = pair[1]
})

testString: String = "session_id=\"8b55ed3af15dcf154aaaedd1bb667489\"/ip_address=\"103.16.104.24\"/last_activity=\"1460548532\""
pairs: [String] = 3 values {
  [0] = "session_id=\"8b55ed3af15dcf154aaaedd1bb667489\""
  [1] = "ip_address=\"103.16.104.24\""
  [2] = "last_activity=\"1460548532\""
}
values: [String : String] = 3 key/value pairs {
  [0] = {
    key = "last_activity"
    value = "\"1460548532\""
  }
  [1] = {
    key = "session_id"
    value = "\"8b55ed3af15dcf154aaaedd1bb667489\""
  }
  [2] = {
    key = "ip_address"
    value = "\"103.16.104.24\""
  }
}

错误消息是什么?请注意,您需要对字符串文字中的双引号进行转义:请参阅中的“字符串文字中的特殊字符”一节。从未听说过双引号被称为倒逗号。@Andrew Sir给定的数据来自于对QRCode的扫描,我需要附加额外的特殊字符才能获得值。错误消息是什么?@AbdulKarim对于代码中的字符串文字,必须转义双引号。这是因为它需要能够解析您在代码中键入的内容,双引号通常表示字符串文本的结尾。对于来自扫描的数据,您不应该逃避双引号。感谢您的rlp@christopher Sir,但问题是给定的数据来自于扫描QRCode,我是否必须附加额外的特殊字符以获得@christopher SirFYI的值,而不是
testString.characters.split(“/”).map(String.init)
模式,我可以只做
testString.componentsSeparatedByString(“/”)
。如果是一种功能性更强的方法,可以使用
reduce
,但这会有点低效。你的回答很好。