Извлечь слово из строки с помощью swift - PullRequest
0 голосов
/ 25 февраля 2020

я хочу извлечь слово из строки примерно так:

"{"photo" : "95.png",
  "other_name" : "othername",
  "name" : "Painting",
  "services" : [],
  "_id" : "id"}"

нет, я хочу извлечь значение name: отсюда, как мне это сделать, так что это будет как любой текст после "name" : " - это слово, которое я ищу

я пробовал что-то вроде этого

let index = onlyName.index(onlyName.index(of: "\"name\"") ?? onlyName.startIndex, offsetBy: 10)
        let mySubstring = onlyName[..<index]

на основе этого вопроса, но onlyName.index(of: "\"name\"") дает me null

я знаю, что могу просто преобразовать его в json, который будет проще, но должен быть строкой

, так как я могу получить значение имени, это может быть используя regx

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Как некоторые люди выше предположили, эта строка, вероятно, json, и у вас есть ссылка на нее где-то в коде. В этом случае вы можете просто преобразовать его в данные, декодировать его и получить имя доступа:

struct MyStruct: Codable {
    let name: String
}

let string = "{\"photo\" : \"95.png\", \"other_name\" : \"othername\", \"name\" : \"Painting\", \"services\" : [], \"_id\" : \"id\"}"

if let data = string.data(using: .utf8),
    let parsed = try? JSONDecoder().decode(MyStruct.self, from: data) {
    print(parsed.name)
}
0 голосов
/ 25 февраля 2020
"{"photo" : "95.png",
  "other_name" : "othername",
  "name" : "Painting",
  "services" : [],
  "_id" : "id"}"

Приведенное выше не является действительной строкой Json, если она будет действительной Json строкой, как показано ниже:

"{\"photo\" : \"95.png\",
      \"other_name\" : \"othername\",
      \"name\" : \"Painting\",
      \"services\" : [],
      \"_id\" : \"id\"}"

И если вы можете иметь действительную Json Строка, то вы можете легко получить значение любого ключа, например

func dictionaryFromJsonString(_ json: String) -> [String: Any]? {
    if let data = json.data(using: .utf8) {
        do {
            return try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
        } catch {
            print(error.localizedDescription)
        }
    }
    return nil
}

И вы можете использовать его как

let jsonString = "{\"photo\" : \"95.png\",
  \"other_name\" : \"othername\",
  \"name\" : \"Painting\",
  \"services\" : [],
  \"_id\" : \"id\"}"


if let dictionary = dictionaryFromJsonString(jsonString) {
    print(dictionary["name"])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...