[英]How can I get String value with out double quotation from info.plist in Xcode
[英]Trim double quotation mark(") from a string
我有一個字符串,我需要刪除以下字符
\\“{]}
從一個字符串。 除了雙引號外,一切正常。
我的字符串是:
{ “FILEID”:1902, “×”:38, “Y”:97}
執行以下操作后:
let charsToBeDeleted = CharacterSet(charactersIn: "\"{]}")
let trimmedStr = str.trimmingCharacters(in: charsToBeDeleted)
print(trimmedStr)
打印:
FILEID “:1902,” × “:38,” Y“:97
它修剪了第一個雙引號而不是其他引號。 如何在沒有雙引號的情況下修剪此字符串?
trimmingCharacters(in
是錯誤的API。它從字符串的開頭( {"
)和end( }
)中刪除字符,但不從內部刪除。
你可以做的是使用replacingOccurrences(of
使用正則表達式選項)。
let trimmedStr = str.replacingOccurrences(of: "[\"{\\]}]", with: "", options: .regularExpression)
[]
是CharacterSet
的正則表達式。
反斜杠是逃避雙引號並將結束括號視為文字所必需的。
但不要修剪 。 這是一個JSON字符串。 將其反序列化為字典
let str = """
{"fileId":1902,"x":38,"y":97}
"""
do {
let dictionary = try JSONSerialization.jsonObject(with: Data(str.utf8)) as! [String:Int]
print(dictionary)
} catch {
print(error)
}
甚至是結構
struct File : Decodable {
let fileId, x, y : Int
}
do {
let result = try JSONDecoder().decode(File.self, from: Data(str.utf8))
print(result)
} catch {
print(error)
}
我沒有測試過,但它會是這樣的:
您可能必須檢查是否正確使用了\\
和"
集合內部的字符轉義。
let charsToDelete:Set<Character> = ["\\", "\"", "{", "]", "}"]
str.removeAll(where: { charsToDelete.contains($0)})
print(str)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.