NSNumberFormatter avec des espaces dedans

laudemalaudema Membre
Bonjour,

    Un attribut est une chaà®ne de neuf chiffres et je voudrais l'afficher avec des espaces dedans: 12345678 deviendrait 12 3 45789. Je tiens à  garder les chiffres sans espaces en interne mais pouvoir saisir et afficher avec les espaces. J'ai essayé toutes sortes de combinaisons dans IB et un NSNumberFormatter de type Mac OX 10.4 Custom mais rien à  faire. Est ce seulement possible ?

Réponses

  • mpergandmpergand Membre
    août 2010 modifié #2
    <br />NSNumberFormatter* f=[textField formatter];<br />[f setFormatterBehavior:NSNumberFormatterBehavior10_4];<br />[f setFormat:@&quot;00,0000000&quot;];<br />[f setGroupingSeparator:@&quot; &quot;];<br />[textField setIntValue:123456789];<br />
    
  • laudemalaudema Membre
    12:03 modifié #3
    dans 1281078464:

    <br />NSNumberFormatter* f=[textField formatter];<br />[f setFormatterBehavior:NSNumberFormatterBehavior10_4];<br />[f setFormat:@&quot;00,0000000&quot;];<br />[f setGroupingSeparator:@&quot; &quot;];<br />[textField setIntValue:123456789];<br />
    


    Grand merci ! j'ai enfin compris comment marchaient les "grouping separators". Qui est plutôt simple, quand on a saisi ;)
    Par contre ça n'ira pas pour ce que je veux faire: 12345678 je veux=> 12*3*45678. Le premier regroupement  est donc de 5 car je veux les 5 derniers chiffres ensemble. Mais après je n'ai plus qu'un regroupement de disponible et il me dit par paquets de combien seront les chiffres avant les 5 premiers. Or je veux un deuxième grouping de 1 (toujours en partant de la droite) puis de 2 (les deux premiers chiffres).
    Si je fais un grouping de 2 => 1*23*45678 = pas bon, par grouping de 1 => 1*2*3*45678 = pas mieux.
    La voie du NSNumberFormatter ne semble donc pas la bonne.
    M'en vais regarder si l'ancien format peut pas servir, sinon probablement les "ValueTransformer" will be the alone solution
    Encore merci
  • laudemalaudema Membre
    12:03 modifié #4
    Donc j'ai fini par utiliser NSValueTransformer (une parmi les classes que je n'avais osé étudier encore, j'aurais dû ;-)
    Mais ça fait un peu lourd comme méthode
    <br />NSString *s1, *s2, *s3;<br />	NSRange r1 = NSMakeRange(0, 2), r2 = NSMakeRange(2, 1);<br />	s1 = [value substringWithRange:r1];<br />	s2 = [value substringWithRange:r2];<br />	s3 = [value substringFromIndex:3];<br />&nbsp; &nbsp; return (value == nil) ? nil : [NSString stringWithFormat:@&quot;%@ %@ %@&quot;, s1, s2, s3];<br />
    

    ça serait bien si on pouvait faire "printf" style mais je n'ai pas vu si on pouvait préciser avec %xiyn avec x indiquant le nombre de chiffres à  afficher et y à  partir de quel endroit ou la même chose en mieux avec %s ou même %c si je pouvais indiquer quel caractère de la chaà®ne je veux afficher ?
Connectez-vous ou Inscrivez-vous pour répondre.