830 Stimmen

Zerlegen Sie einen String in ein Array in Swift?

Sagen wir, ich habe hier einen String:

var fullName: String = "Vorname Nachname"

Ich möchte den String anhand der Leerzeichen aufteilen und die Werte den jeweiligen Variablen zuweisen

var fullNameArr = // so etwas wie: fullName.explode(" ") 

var firstName: String = fullNameArr[0]
var lastName: String? = fullnameArr[1]

Manchmal haben Benutzer auch keinen Nachnamen.

1199voto

Chen-Tsu Lin Punkte 22052

Einfach rufen Sie die Methode componentsSeparatedByString auf Ihrem fullName

import Foundation

var fullName: String = "Vorname Nachname"
let fullNameArr = fullName.componentsSeparatedByString(" ")

var vorname: String = fullNameArr[0]
var nachname: String = fullNameArr[1]

Aktualisierung für Swift 3+

import Foundation

let fullName    = "Vorname Nachname"
let fullNameArr = fullName.components(separatedBy: " ")

let vorname    = fullNameArr[0]
let nachname = fullNameArr[1]

831voto

Ethan Punkte 18116

Der Swift-Weg besteht darin, die globale split-Funktion zu verwenden, wie folgt:

var fullName = "Vorname Nachname"
var fullNameArr = split(fullName) {$0 == " "}
var firstName: String = fullNameArr[0]
var lastName: String? = fullNameArr.count > 1 ? fullNameArr[1] : nil

mit Swift 2

In Swift 2 wird die Verwendung von split aufgrund der Einführung des internen CharacterView-Typs etwas komplizierter. Dies bedeutet, dass String nicht mehr die Protokolle SequenceType oder CollectionType übernimmt und stattdessen die Eigenschaft .characters verwendet werden muss, um eine CharacterView-Typ-Repräsentation eines String-Exemplars zu erhalten. (Hinweis: CharacterView übernimmt die Protokolle SequenceType und CollectionType).

let fullName = "Vorname Nachname"
let fullNameArr = fullName.characters.split{$0 == " "}.map(String.init)
// oder einfach:
// let fullNameArr = fullName.characters.split{" "}.map(String.init)

fullNameArr[0] // Vorname
fullNameArr[1] // Nachname

214voto

Wyetro Punkte 8260

Die einfachste Methode, dies zu tun, besteht darin, componentsSeparatedBy zu verwenden:

Für Swift 2:

import Foundation
let fullName : String = "Vorname Nachname";
let fullNameArr : [String] = fullName.componentsSeparatedByString(" ")

// Und dann um auf die einzelnen Wörter zuzugreifen:

var vorname : String = fullNameArr[0]
var nachname : String = fullNameArr[1]

Für Swift 3:

import Foundation

let fullName : String = "Vorname Nachname"
let fullNameArr : [String] = fullName.components(separatedBy: " ")

// Und dann um auf die einzelnen Wörter zuzugreifen:

var vorname : String = fullNameArr[0]
var nachname : String = fullNameArr[1]

162voto

LugiHaue Punkte 2516

Swift Dev. 4.0 (24. Mai 2017)

Eine neue Funktion split in Swift 4 (Beta).

import Foundation
let sayHello = "Hallo Swift 4 2017";
let result = sayHello.split(separator: " ")
print(result)

Ergebnis:

["Hallo", "Swift", "4", "2017"]

Zugriff auf Werte:

print(result[0]) // Hallo
print(result[1]) // Swift
print(result[2]) // 4
print(result[3]) // 2017

Xcode 8.1 / Swift 3.0.1

Hier ist der Weg mehrere Trennzeichen mit einem Array.

import Foundation
let mathString: String = "12-37*2/5"
let numbers = mathString.components(separatedBy: ["-", "*", "/"])
print(numbers)

Ergebnis:

["12", "37", "2", "5"]

87voto

Mithra Singam Punkte 1389

Update für Swift 5.2 und der einfachste Weg

let paragraph = "Bob hat einen Ball getroffen, der getroffene BALL flog weit, nachdem er getroffen wurde. Hallo! Hallo, wie geht es dir?"

let words = paragraph.components(separatedBy: [",", " ", "!",".","?"])

Dies druckt das Folgende aus

["Bob", "hat", "einen", "Ball", "", "der", "getroffene", "BALL", "flog", "weit", "nachdem", "er", "getroffen", "", "Hallo", "", "Hallo", "", "wie", "geht", "es", "dir?"]

Wenn Sie jedoch leere Zeichenfolgen filtern möchten,

let words = paragraph.components(separatedBy: [",", " ", "!",".","?"]).filter({!$0.isEmpty})

Ausgabe,

["Bob", "hat", "einen", "Ball", "der", "getroffene", "BALL", "flog", "weit", "nachdem", "er", "getroffen", "Hallo", "Hallo", "wie", "geht", "es", "dir"]

Aber stellen Sie sicher, dass Foundation importiert ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X