Trim 来自字符串的双引号 (")
Trim double quotation mark(") from a string
我有一个字符串,我需要删除后面的字符
\ " { ] }
来自字符串。除了双引号外,一切正常。
我的字符串是:
{"fileId":1902,"x":38,"y":97}
执行以下操作后:
let charsToBeDeleted = CharacterSet(charactersIn: "\"{]}")
let trimmedStr = str.trimmingCharacters(in: charsToBeDeleted)
print(trimmedStr)
打印:
fileId":1902,"x":38,"y":97
它 trim第一个双引号而不是其他双引号。我如何 trim 这个字符串不带双引号?
trimmingCharacters(in
是错误的API。它删除字符串开头 ({"
) 和结尾 (}
) 中的字符,但不删除字符串中的字符。
您可以使用 replacingOccurrences(of
和正则表达式选项。
let trimmedStr = str.replacingOccurrences(of: "[\"{\]}]", with: "", options: .regularExpression)
[]
是 CharacterSet
.
的等价正则表达式
反斜杠是转义双引号并将右括号视为文字所必需的。
但不要trim。这是一个 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([=10=])})
print(str)
我有一个字符串,我需要删除后面的字符
\ " { ] }
来自字符串。除了双引号外,一切正常。
我的字符串是:
{"fileId":1902,"x":38,"y":97}
执行以下操作后:
let charsToBeDeleted = CharacterSet(charactersIn: "\"{]}")
let trimmedStr = str.trimmingCharacters(in: charsToBeDeleted)
print(trimmedStr)
打印:
fileId":1902,"x":38,"y":97
它 trim第一个双引号而不是其他双引号。我如何 trim 这个字符串不带双引号?
trimmingCharacters(in
是错误的API。它删除字符串开头 ({"
) 和结尾 (}
) 中的字符,但不删除字符串中的字符。
您可以使用 replacingOccurrences(of
和正则表达式选项。
let trimmedStr = str.replacingOccurrences(of: "[\"{\]}]", with: "", options: .regularExpression)
[]
是 CharacterSet
.
的等价正则表达式
反斜杠是转义双引号并将右括号视为文字所必需的。
但不要trim。这是一个 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([=10=])})
print(str)