Découper une Chaîne en un tableau de Swift?
Dire que j'ai une chaîne ici:
var fullName: String = "First Last"
Je veux diviser la chaîne de base sur l'espace blanc et assigner les valeurs de leurs variables respectives
var fullNameArr = //something like: fullName.explode(" ")
var firstName: String = fullNameArr[0]
var lastName: String? = fullnameArr[1]
Aussi, parfois, les utilisateurs pourraient ne pas avoir un nom de famille.
Salut, je n'ai pas mon Mac pour vérifier. Mais vous pouvez essayer 'fullName.componentsSeparatedByString(chaîne:" ")' Ne pas copier et coller, utilisez le autocompletefunction, de sorte que vous obtenez le droit de la fonction.
Si vous êtes seulement de fractionnement par un personnage, à l'aide de
Aussi, parfois, les noms de famille, d'avoir des espaces dans les, comme dans "Daphné du Maurier" ou "Charles de Lint"
Qu'appelez-vous la technologie à séparer la chaîne comme "thisisatest" dans "Ceci est un test"? Aucune idée de comment faire cela?
Découvrez ma réponse de Swift 5: stackoverflow.com/questions/25678373/...
Si vous êtes seulement de fractionnement par un personnage, à l'aide de
fullName.utf8.split( <utf-8 character code> )
fonctionne aussi bien (remplacer .utf8
avec .utf16
pour l'UTF-16). Par exemple, le fractionnement sur +
pourrait être fait à l'aide de fullName.utf8.split(43)
Aussi, parfois, les noms de famille, d'avoir des espaces dans les, comme dans "Daphné du Maurier" ou "Charles de Lint"
Qu'appelez-vous la technologie à séparer la chaîne comme "thisisatest" dans "Ceci est un test"? Aucune idée de comment faire cela?
Découvrez ma réponse de Swift 5: stackoverflow.com/questions/25678373/...
OriginalL'auteur blee908 | 2014-09-05
Vous devez vous connecter pour publier un commentaire.
La Swift est d'utiliser le mondial
split
fonction, comme suit:avec Swift 2
Dans Swift 2 l'utilisation de split devient un peu plus compliqué en raison de l'introduction de l'intérieur CharacterView type. Cela signifie que la Chaîne n'est plus adopte le type de séquence ou CollectionType protocoles et vous devez plutôt utiliser la
.characters
propriété pour accéder à un CharacterView type de représentation d'une instance de Chaîne. (Note: CharacterView adopte type de séquence et CollectionType protocoles).Comme de Xcode 6.2b3 split peut être utilisé comme
split("a:b::c:", {$0 == ":"}, maxSplit: Int.max, allowEmptySlices: false)
.Rappelez-vous juste que vous devez toujours utiliser l'ancien
componentsSeparatedByString()
méthode si votre séparateur est rien de plus que d'un seul caractère. Et aussi frais qu'il serait de direlet (firstName, lastName) = split(fullName) {$0 == ' '}
, cela ne fonctionne pas, malheureusement.ensuite, vous pouvez utiliser
split("a,b;c,d") {$0 == "," || $0 == ";"}
ousplit("a,b;c,d") {contains(",;", $0)}
Code Correct pour Xcode 7.0 est de laisser fullNameArr = fullName.des personnages.split{$0 == " "}.carte(Chaîne de caractères.init). Essayé de modifier, mais il a été rejeté.
OriginalL'auteur Ethan
Appelez simplement
componentsSeparatedByString
méthode sur votrefullName
Mise à jour pour Swift 3+
À noter que c'est en fait un sous-jacent
NSString
(Swift échange automatiquement lorsque vous importez deFoundation
).Je suis d'accord que cela devrait être la accepté de répondre beaucoup plus propre et plus simple de répondre.
Cette réponse travaille dans Xcode 7 beta 4 et Swift 2.0. Xcode maintenant auto-complète la Fondation des méthodes sur Swift objets de Chaîne sans type de casting pour un NSString, ce qui n'est pas le cas dans Xcode 6.4 avec Swift 1.2.
cela ne fonctionne pas dans Swift 2: Xcode 7
OriginalL'auteur Chen-Tsu Lin
La méthode la plus simple pour ce faire est d'utiliser componentsSeparatedBy:
Pour Swift 2:
Pour Swift 3:
envisager
.componentsSeparatedByCharactersInSet(.whitespaceAndNewlineCharacterSet())
il y a deux fonctions:
componentsSeparatedByString
etcomponentsSeparatedByCharactersInSet
Comment diviser en max N parties?
cette question est de plus de 4 ans - poser une nouvelle question
OriginalL'auteur WMios
Swift Dev. 4.0 (24 Mai 2017)
Une nouvelle fonction
split
dans Swift 4 (Bêta).De sortie:
L'accès à des valeurs:
Xcode 8.1 /Swift 3.0.1
Ici est la façon dont plusieurs séparateurs avec le tableau.
De sortie:
import Foundation
à la classe que vous soyez à l'aide de ce. #SavedYouFiveMinutesAttention (Swift 4): Si vous avez une chaîne comme
let a="a,,b,c"
et que vous utiliseza.split(separator: ",")
vous obtenez un tableau comme["a", "b", c"]
par défaut. Ceci peut être modifié à l'aide deomittingEmptySubsequences: false
qui est vrai par défaut.Tout de caractères multi-splits dans Swift 4+?
OriginalL'auteur LugiHaue
Comme une alternative à WMios réponse, vous pouvez également utiliser
componentsSeparatedByCharactersInSet
, ce qui peut être pratique dans le cas où vous avez plus de séparateurs (espace, virgule, etc.).Avec votre entrée:
À l'aide de plusieurs séparateurs:
,
ou;
ou de tout autre séparateurC'est plus facile que l'on a accepté la réponse!
SOLIDE À TROUVER! Est-il une bonne ressource sur l'apprentissage de ce qui peut être fait avec Swift Chaînes, au-delà de chalutage en-têtes?
C'est avery belle écriture-up: oleb.net/blog/2016/08/swift-3-strings
OriginalL'auteur Antonio
Swift 4
components
méthode sur des chaînesoui, il est. Bobby réponse est valable.
hmm je ne sais pas pourquoi on a pas tenu plus tôt.
cela se produit si le projet est pré immeuble ou simplement bâtiment pendant que vous tapez votre code.
OriginalL'auteur Bobby
Xcode 9 Swift 4 ou Xcode 8.2.1 • Swift 3.0.2
Si vous avez juste besoin de formater correctement un nom de personne, vous pouvez utiliser PersonNameComponentsFormatter.
modifier/mise à jour:
Swift 5 ou version ultérieure
Juste pour scinder une chaîne non lettre de personnages que l'on peut utiliser la nouvelle propriété de Caractère
isLetter
:OriginalL'auteur Leo Dabus
Les espaces question
Généralement, les gens réinventer ce problème et de mauvaises solutions. Est-ce un espace? "" et "\n", "\t" ou certains espaces unicode caractère que vous ne l'avez jamais vu, en grande partie parce qu'il est invisible. Alors que vous pouvez sortir avec
Une solution faible
Si jamais vous avez besoin de secouer votre prise sur la réalité montre un WWDC vidéo sur des chaînes ou des dates. En bref, il est presque toujours préférable de permettre à Apple pour résoudre ce type de tâches fastidieuses.
Robuste Solution: Utiliser NSCharacterSet
La façon de le faire correctement, à mon humble avis, est d'utiliser
NSCharacterSet
puisque, comme indiqué plus tôt, votre espace pourrait ne pas être ce que vous attendez et Apple a fourni un espace de jeu de caractères. Pour explorer les différentes fourni des jeux de caractères découvrez d'Apple NSCharacterSet de la documentation du développeur et ensuite, seulement ensuite, de compléter ou construire un nouveau jeu de caractères si elle ne correspond pas à vos besoins.NSCharacterSet des espaces
Certainement la meilleure réponse ici.
OriginalL'auteur Cameron Lowell Palmer
Dans Swift Xcode 4.2 et 10
Option 1
Option 2
Option 3
Option 4
Par La Documentation D'Apple....
OriginalL'auteur iOS
Swift 4 le rend beaucoup plus facile de diviser les caractères, il suffit d'utiliser la nouvelle fonction de répartition pour les Chaînes.
Exemple:
let s = "hi, hello"
let a = s.split(separator: ",")
print(a)
Maintenant, vous avez un tableau avec " hi " et "bonjour".
Notez que ce ne sont pas de retourner un tableau de Chaîne de caractères, mais éventail de sous-Chaîne qui est difficile à utiliser.
OriginalL'auteur Jeroen Zonneveld
Swift 3
AAA
,BBB
etCCC
.whitespaces
avec.whitespacesAndNewlines
OriginalL'auteur tepl
Xcode 8.0 /Swift 3
Long Chemin:
OriginalL'auteur NikaE
J'ai trouvé un cas Intéressant, qui
méthode 1
Lorsque j'ai utilisé cette commande pour diviser certains symbole à partir des données chargées à partir du serveur, il peut se diviser pendant que le test en simulateur et de les synchroniser avec dispositif de test, mais il ne sera pas divisé en publier app, et Ad Hoc
Il me prendre beaucoup de temps pour suivre cette erreur, Il pourrait maudit de certains Swift Version, ou certaines Version d'iOS, ou ni l'
Il n'est pas sur le code HTML aussi, depuis que j'ai essayer de stringByRemovingPercentEncoding et il n'est toujours pas de travail
plus 10/10/2015
dans Swift 2.0 cette méthode a été modifié pour
méthode 2
Lorsque j'ai utilisé cette commande, il peut diviser les mêmes données que la charge du serveur correctement
Conclusion, je suggère d'utiliser la méthode 2
OriginalL'auteur Sruit A.Suk
J'ai eu un scénario où plusieurs caractères de contrôle peuvent être présents dans la chaîne que je veux partager. Plutôt que de maintenir un tableau de ces, je viens de laisser Apple gérer la partie.
Les ouvrages suivants, avec Swift sur iOS 3.0.1 10:
OriginalL'auteur CodeBender
La plupart de ces réponses supposent que l'entrée contient un espace - pas blancde l'espace, et un seul espace. Si vous pouvez faire cette affirmation, puis la accepté de répondre (à partir de bennett) est très élégant et également de la méthode que je vais quand je peux.
Quand on ne peut pas faire une telle supposition, une solution plus robuste doit couvrir les points suivants siutations que la plupart des réponses ici ne considèrent pas:
\n
) et Windows (\r\n
) caractères de saut de lignePour couvrir ces cas, cette solution utilise les regex pour convertir tous les espaces (y compris récurrents et Windows caractères de saut de ligne) dans un espace unique, de garnitures, puis se sépare en un seul espace:
Swift 3:
OriginalL'auteur DonVaughn
Swift 4, Xcode, 10 et iOS 12 mise à Jour 100% de travail
Voir le La documentation d'Apple ici pour de plus amples informations.
OriginalL'auteur Xcodian Solangi
Ou sans fermetures vous pouvez faire tout cela dans Swift 2:
OriginalL'auteur Rauli Rikama
Espère que cela est utile
Swift 4: découper une Chaîne en un tableau. Étape 1: attribuer une chaîne de caractères. étape 2: @ crève. Remarque: variableName.les composants(separatedBy: "split mot-clé")
OriginalL'auteur Vidhyapathi Kandhasamy
Xcode 7.2 (7C68)
OriginalL'auteur Amr Lotfy
Swift 2.2
Erreur de Manipulation & capitalizedString Ajouté :
OriginalL'auteur Aqib Mumtaz
Disons que vous avez une variable nommée "Hello World" et si vous voulez diviser et de le stocker dans deux variables différentes, vous pouvez l'utiliser comme ceci:
OriginalL'auteur Parth Barot
Swift 4
Sortie
OriginalL'auteur MrMins
Ce a de nouveau Changé dans la version Beta 5. Deee! C'est maintenant une méthode sur CollectionType
Vieux:
Nouveau:
Pommes Notes De Version
OriginalL'auteur Daniel H.
Pour swift 2, XCode 7.1:
OriginalL'auteur abinop
Comme par Swift 2.2
Vous venez d'écrire 2 lignes de code et vous obtiendrez la scission de chaîne.
Profiter. 🙂
OriginalL'auteur Gautam Sareriya
Voici un algorithme que je viens de construire, ce qui permettra de diviser un
String
par toutCharacter
de la matrice et si il y a un désir de garder les sous-chaînes avec coupée en deux caractères on pourrait définir laswallow
paramètretrue
.Xcode 7.3 - Swift 2.2:
Exemple:
OriginalL'auteur DevAndArtist
Gestion de chaîne est encore un défi en Swift et il ne cesse de changer de manière significative, comme vous pouvez le voir dans d'autres réponses. Espérons que les choses s'installent et il devient plus simple. C'est la façon de le faire avec l'actuelle version 3.0 de Swift avec plusieurs caractères de séparation.
Swift 3:
OriginalL'auteur possen
Je cherchais minable split, tels que le PHP est
explode
où les séquences vides sont inclus dans le tableau qui en résulte, cela a fonctionné pour moi:De sortie:
OriginalL'auteur AamirR
Je n'ai pas trouvé la solution qui permettrait de gérer les noms avec 3 ou plus de composants et de prendre en charge les anciennes versions iOS.
Passé des cas de test:
OriginalL'auteur Vadim Bulavin
OriginalL'auteur jnblanchard