簡體   English   中英

修剪字符串中的雙引號(“)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM