[Résolu] String : Les formats et la localization

iLandesiLandes Membre
février 2015 modifié dans Objective-C, Swift, C, C++ #1

Bonjour,


 


Je n'arrive pas à  trouver le format à  mettre dans le code ci-dessous  afin d'obtenir "2,00" au lieu de "2.00" 


 


 


var myString = String(format: "a double : %.2f", 2.0)


 


 


Question subsidiaire, y a-t-il un moyen de récupérer les préférences de format des nombres définies par l'utilisateur. Ce qui permettrait de remplacer le "." par le séparateur préféré de l'utilisateur.


 


D'avance merci de vos réponses


 


s


e


b


Mots clés:

Réponses

  • En Cocoa j'utilise ceci qui fonctionne bien :


     


    + (instancetype)localizedStringWithFormat:(NSString *)format


  • iLandesiLandes Membre
    février 2015 modifié #3

    Merci fleurantin !  :p


     


    Ce qui donne en swift :



    let localizedString = NSString.localizedStringWithFormat("Double : %.2f", 2.00)

    Par contre, ce qui est troublant voir piégeant c'est que le code ci-dessous ne localise rien (le "." reste).

     



    let localizedString = String.localizedStringWithFormat("Double : %.2f", 2.00)


     


    Les experts du forum auront peut-être une explication. Les String ne sont peut-être pas encore tout à  fait des NSString ?


  • Les experts du forum sont en train de jouer dans un épisode spécial de "Les Experts : Paris"

  • Tu dois utiliser NSNumberFormatter pour réaliser ce que tu souhaites.


     


    Par exemple, pour obtenir le résultat que tu veux, il faudrait faire ceci :



    let formatter = NSNumberFormatter()
    formatter.numberStyle = NSNumberFormatterStyle.DecimalStyle

    let locale = "fr_FR"
    formatter.locale = NSLocale(localeIdentifier: locale)
    formatter.maximumFractionDigits = 2
    formatter.minimumFractionDigits = 2
    println(formatter.stringFromNumber(2.00)) 
  • iLandesiLandes Membre
    février 2015 modifié #6

    Désolé Magiic mais ta solution me semble plus complexe, celle de fleurantin tient en une seule ligne.  ::)


  • Plus complexe, tout est relatif mais en plusieurs lignes oui. Ceci à  l'avantage au moins de mettre la virgule comme tu semblais le vouloir en plus d'être plus souple.


  • C'est plus complexe dans mon cas. Car il s'agit de formater des données dans un message localisable qui est sous forme de string dans un fichier Localizable.strings.


     


    Toutes les contributions sont bonnes à  prendre et apporte toujours de la connaissance, même si ce n'est pas dans l'immédiat. Grâce à  toi je découvre NSNumberFormater dans du code alors que je ne l'utilise généralement que dans interface builder.


     


    Merci pour ta contribution


Connectez-vous ou Inscrivez-vous pour répondre.