Mettre un espace entre les Chiffres sur Xcode.

Rshitek

Membre junior
6 Octobre 2019
10
0
36
Bonjour à tous et à toutes,

Je souhaite écrire des chiffres sur Xcode dans un label (donc non modifiable par l'utilisateur), ayant un espace entre eux.
Passer de : 123456789012 à ca: 123 456 789 012

Le rentrer manuellement ne fonctionne pas. il faudrait écrire une ligne de code que bien sur, je ne connais pas.

Auriez vous une solution quelconque à me proposer?

Merci d'avance.
 

Diablo76

Démon rieur
3 Mai 2014
624
187
Le Havre
Bonjour,
En décomposant ta chaîne de caractères et en insérant un espace tout les N caractères (ici 3).

Bloc de code:
let text = "123456789012"
var newText = String()
for (index, character) in text.enumerated() {
    if index != 0 && index % 3 == 0 {
        newText.append(" ")
    }
    newText.append(String(character))
}
print(newText)

// ou plus compact
newText = String(text.enumerated().map { $0 > 0 && $0 % 3 == 0 ? [" ", $1] : [$1]}.joined())
print(newText)
 
Dernière édition:

Rshitek

Membre junior
6 Octobre 2019
10
0
36
Bonjour,
merci beaucoup pour ta réponse j'essaierai tes lignes de codes (quand Xcode aura fini de faire sa mise à jour).
Néanmoins j'ai une question, est ce valable quelque soit les chiffres que je mettrai?

Merci encore une fois.
 

Rshitek

Membre junior
6 Octobre 2019
10
0
36
Re,
J'ai essayé mais ça ne fonctionne pas.
Je m'explique un peu plus en détail.
J'ai un slider dans une view précédente. Le résultat (lorsque je bouge le slider) apparaît dans ma view suivante.
J'aimerai alors que le résultat affiché à mon slider (correspondant à la suite de nombre), puisse avoir des espaces de type :
X XXX ou encore X XXX XXX ou encore XX XXX XXX, ou encore XXX XXX XXX, quelque soit le chiffre affiché.

Je ne sais pas si je suis assez clair??
 

Rshitek

Membre junior
6 Octobre 2019
10
0
36
c'est exactement une conversion de chiffre en valeur monétaire.
Comment donc l'utiliser?
 

Diablo76

Démon rieur
3 Mai 2014
624
187
Le Havre
Ok je ne sais pas si ça va t'aider
Bloc de code:
let valeur = NumberFormatter()
        valeur.usesGroupingSeparator = true
        valeur.numberStyle = .currency
        valeur.locale = Locale(identifier: "fr_FR")
        let prix = valeur.string(from: 12345689)!
        print(prix)
 

Rshitek

Membre junior
6 Octobre 2019
10
0
36
Bonjour, désolé cela fait un moment que je ne me suis connecté.
Effectivement je programme bien en swift et je n'y arrive toujours pas.
 

paranormal-wizzzard

Membre d’élite
26 Août 2013
1 286
75
RENNES
Serait-il possible de concaténer comme en JS (voir paragraphe "le type de chaine") ?
 

Diablo76

Démon rieur
3 Mai 2014
624
187
Le Havre
Bonjour,
As-tu une erreur ?, si tu test mon exemple dans un simple Playground, ça fonctionne.
Post la partie de ton code qui pose problème.
 

ntx

Vénérable sage
Club MacG
15 Octobre 2004
12 028
366
92
Il ne faut pas essayer de bidouiller la chaine de caractères, il faut utiliser soit comme l'a proposé Diablo76 un formatter (quand tu développes un peu de persévérance ne fait pas de mal, ne pas conclure trop vite "ça ne marche pas"), soit mieux récupérer les préférences utilisateur et utiliser le séparateur de nombre choisi par l'utilisateur.
 
  • J’aime
Réactions: Diablo76

Diablo76

Démon rieur
3 Mai 2014
624
187
Le Havre
quand tu développes un peu de persévérance ne fait pas de mal, ne pas conclure trop vite "ça ne marche pas"
je pense qu'il ne sait pas comment adapter mon exemple dans son code, il est évident que le copier-coller ne marchera pas mais si il nous donne la portion de code qui pose problème, alors on aura plus d'éléments
 

Rshitek

Membre junior
6 Octobre 2019
10
0
36
Bonjour,
Effectivement, je ne sais pas trop comment adapter le code. Pour infos, je ne copie-colle pas le code donné. Ahah!
Comme je débute dans la programmation (j'en apprends un peu tous les jours), j'ai mis aux oubliettes cette partie pour me focaliser ailleurs. Je reviendrai bientôt: "I'll be back" (Terminator).