Comment ajouter un séparateur de chaîne à tous les N caractères de swift?
J'ai une chaîne de caractères qui contient le code binaire. Comment séparer pour les paires de chiffres?
Supposons que la chaîne est:
let x = "11231245"
Je veux ajouter un séparateur comme des ":" (c'est à dire, les deux-points) après chaque 2 caractères.
Je voudrais la sortie:
"11:23:12:45"
Comment pourrais-je le faire dans Swift ?
Pour l'enregistrement et votre propre bénéfice dans l'avenir,
qu'avez-vous essayé jusqu'à présent? notez que la seule ligne de code que vous avez fournie est en fait même pas un code valide
:
est un "colon". "Virgule" signifie ,
.qu'avez-vous essayé jusqu'à présent? notez que la seule ligne de code que vous avez fournie est en fait même pas un code valide
OriginalL'auteur Bolo | 2015-12-24
Vous devez vous connecter pour publier un commentaire.
Swift 4.2 • Xcode 10
Tests
Oui, j'ai écrit à tous. N'hésitez pas à poster votre approche du problème et de ce qui s'est passé dans une nouvelle question et je vais prendre un coup d'oeil.
Grand, prendre un coup d'oeil ici. stackoverflow.com/questions/43005306/...
si vous souhaitez diviser votre chaîne, chaque espace après le 9 ?
Non, Chaque espace avant le 9ème.
OriginalL'auteur Leo Dabus
:
, essayez d'ajouter la:
en face de la$0.element
si et seulement si vous n'êtes pas sur le premier caractère.il suffit d'ajouter .aplatir().dropLast()
La demande a été "après chaque 2 caractères". Si fuite ":" n'est pas souhaitée, alors, oui, ce que vous suggérez va faire, c'est:
$0.index > 0 && $0.index % 2 == 0 ? [":", $0.element] : [$0.element]
non, dropLast va consommer de la charge utile de caractère dans le cas où si originale de la chaîne est de longueur impaire.
String(x.des personnages.énumérer().map() { $0.index % 2 == 1 ? [$0.élément] : [":",$0.élément] }.aplatir().dropFirst())
OriginalL'auteur courteouselk
Court et simple, ajouter un
let
ou deux si vous voulezlet a = "separatemepleaseandthankyou".separate(every: 4, with: " ")
a
estOriginalL'auteur Joe Maher
Je vais aller pour cette solution compacte (Swift 4) :
Vous pouvez faire une extension et paramétrer la foulée et de la séparation, de sorte que vous pouvez l'utiliser pour chaque valeur que vous souhaitez (Dans mon cas, je l'utilise pour vidage de 32 bits de l'espace-exploité des données hexadécimales):
Dans votre cas, cela donne les résultats suivants:
OriginalL'auteur Stéphane de Luca
Ma tentative de ce code serait:
Les sorties qui
intoString.des personnages.énumérer().forEach { index, c dans le cas de l'indice % afterEveryXChars == 0 && index > 0 { ...
pas du tout, allez - y, êtes-vous encore jouer un peu avec elle? 😛
ne pas jouer autour. Je suis heureux avec le mien 🙂 juste pour vous laisser savoir comment utiliser les énumérer()
OriginalL'auteur luk2302
Son mon code swift 4
Sorties 11:23:12:45
OriginalL'auteur Evgeniy
///ou O(1) mise en œuvre (sans compter)
OriginalL'auteur john07
Une simple Chaîne d'extension qui n'a pas besoin de l'original de la chaîne pour être un multiple de la taille du pas (incrément):
OriginalL'auteur Steig