¿Cómo convierto una matriz Swift en una cadena?
Sé cómo hacerlo mediante programación, pero estoy seguro de que hay una forma integrada...
Cada lenguaje que he usado tiene algún tipo de representación textual predeterminada para una colección de objetos que escupirá cuando intentes concatenar el Array con una cadena, o pasarlo a una función print(), etc. ¿El lenguaje Swift de Apple ¿Tenemos una forma incorporada de convertir fácilmente una matriz en una cadena, o siempre tenemos que ser explícitos al encadenar una matriz?
Si la matriz contiene cadenas, puede utilizar el String
método join
:
var array = ["1", "2", "3"]
let stringRepresentation = "-".join(array) // "1-2-3"
En Swift 2 :
var array = ["1", "2", "3"]
let stringRepresentation = array.joinWithSeparator("-") // "1-2-3"
Esto puede resultar útil si desea utilizar un separador específico (guión, espacio en blanco, coma, etc.).
De lo contrario, puedes simplemente usar la description
propiedad, que devuelve una representación de cadena de la matriz:
let stringRepresentation = [1, 2, 3].description // "[1, 2, 3]"
Sugerencia: cualquier objeto que implemente el Printable
protocolo tiene una description
propiedad. Si adopta ese protocolo en sus propias clases/estructuras, también las hará fáciles de imprimir.
En rápido 3
join
se convierte enjoined
, ejemplo[nil, "1", "2"].flatMap({$0}).joined()
joinWithSeparator
se convierte enjoined(separator:)
(solo disponible para Array of Strings)
En rápido 4
var array = ["1", "2", "3"]
array.joined(separator:"-")
Con Swift 5, según sus necesidades, puede elegir uno de los siguientes códigos de muestra de Playground para resolver su problema.
Convertir una matriz de Character
s en String
sin separador:
let characterArray: [Character] = ["J", "o", "h", "n"]
let string = String(characterArray)
print(string)
// prints "John"
Convertir una matriz de String
s en String
sin separador:
let stringArray = ["Bob", "Dan", "Bryan"]
let string = stringArray.joined(separator: "")
print(string) // prints: "BobDanBryan"
Convertir una matriz de String
s en a String
con un separador entre palabras:
let stringArray = ["Bob", "Dan", "Bryan"]
let string = stringArray.joined(separator: " ")
print(string) // prints: "Bob Dan Bryan"
Convertir una matriz de String
s en a String
con un separador entre caracteres:
let stringArray = ["car", "bike", "boat"]
let characterArray = stringArray.flatMap { $0 }
let stringArray2 = characterArray.map { String($0) }
let string = stringArray2.joined(separator: ", ")
print(string) // prints: "c, a, r, b, i, k, e, b, o, a, t"
Convertir una matriz de Float
s en a String
con un separador entre números:
let floatArray = [12, 14.6, 35]
let stringArray = floatArray.map { String($0) }
let string = stringArray.joined(separator: "-")
print(string)
// prints "12.0-14.6-35.0"