Как конвертировать String Array в String в Swift - PullRequest
0 голосов
/ 12 сентября 2018

Мне нужно преобразовать массив String в один String.

Это мой массив:

["1", "2", "3", "4", "5"]

Мне нужно получить это:

"[" 1 "," 2 "," 3 "," 4 ", "5"] "

Ответы [ 7 ]

0 голосов
/ 12 сентября 2018

Попробуйте этот код для быстрого 4

 override func viewDidLoad() {
        super.viewDidLoad()

        let strArray = self.getString(array: ["1", "2", "3"])
        print(strArray)

        // Do any additional setup after loading the view, typically from a nib.
    }

    func getString(array : [String]) -> String {
        let stringArray = array.map{ String($0) }
        return stringArray.joined(separator: ",")
    }
0 голосов
/ 12 сентября 2018
func objectToJSONString(dictionaryOrArray: Any) -> String? {
do {

    //Convert to Data
    let jsonData = try JSONSerialization.data(withJSONObject: dictionaryOrArray, options: JSONSerialization.WritingOptions.prettyPrinted)

    //Convert back to string. Usually only do this for debugging
    if let JSONString = String(data: jsonData, encoding: String.Encoding.utf8) {
        return JSONString
    }

} catch {
    print(error.localizedDescription)
}

return nil
}

Выход будет

Playground test

Изменить для точного ответа

Объявление расширения строки для строки

extension String {
var unescaped: String {
    let entities = ["\0": "\\0",
                    "\t": "\\t",
                    "\n": "\\n",
                    "\r": "\\r",
                    "\"": "\\\"",
                    "\'": "\\'",
                    ]

    return entities
        .reduce(self) { (string, entity) in
            string.replacingOccurrences(of: entity.value, with: entity.key)
        }
        .replacingOccurrences(of: "\\\\(?!\\\\)", with: "", options: .regularExpression)
        .replacingOccurrences(of: "\\\\", with: "\\")
}
}

Модифицированный код будет

let array = ["1","2","3","4","5"]

let jsonString = objectToJSONString(dictionaryOrArray: array)

print(jsonString!.debugDescription) // this will print "[\"1\",\"2\",\"3\",\"4\",\"5\"]"

let result = jsonString!.debugDescription.unescaped

print(result)

Итак, вывод

enter image description here

Happy Coding:)

0 голосов
/ 12 сентября 2018

Вы можете конвертировать ваш массив в строку CSV, используя это.

let productIDArray = ["1","2","3","4","5"]
let productIDString = productIDArray.joined(separator: ",")
0 голосов
/ 12 сентября 2018
extension Array {

    var fancyString: String {
        let formatted = self.description.replacingOccurrences(of: " ", with: "")
        return "\"\(formatted)\""
    }
}

let array = ["1", "2", "3", "4", "5"]
print(array.fancyString) //"["1","2","3","4","5"]"

Примечание: это решение будет работать с Array s любого типа

let ints = [1, 1, 3, 5, 8]
print(ints.fancyString) // "[1,1,3,5,8]"
0 голосов
/ 12 сентября 2018

Если вы хотите от ["1","2","3","4","5"] до "["1","2","3","4","5"]", отметьте

Вы можете сделать это простым способом, пожалуйста, попробуйте это

 let arr = ["1","2","3","4","5"]
 let str = "\"\(arr)\""

enter image description here

0 голосов
/ 12 сентября 2018

В результате получается строка JSON, поэтому используйте JSONEncoder

let array =  ["1","2","3","4","5"]
do {
    let data = try JSONEncoder().encode(array)
    let string = String(data: data, encoding: .utf8)!
    print(string.debugDescription) // "[\"1\",\"2\",\"3\",\"4\",\"5\"]"
} catch { print(error) }
0 голосов
/ 12 сентября 2018

Это должно работать.

let string = ["1","2","3","4","5"]

let newString = "\"[\"" + string.joined(separator: "\",\"") + "\"]\""

print(newString) // Prints "["1","2","3","4","5"]"

Редактировать: лучший способ - использовать ответ @ vadian . Хотя это и не похоже на действительный вариант использования.

...