8
votes

Remplacez le point (.) Par virgule (,) à l'aide de regex?

Je travaille sur une application C #. Je veux changer de chiffre décimal numéro avec virgade (,) où j'ai dot (.) Utilisation d'une expression régulière.

Par exemple: P>

Price= 100.00,56


0 commentaires

6 Réponses :


5
votes

Vous pouvez le faire même sans regex. Par exemple xxx


0 commentaires

25
votes

Lors de la mise en forme des numéros, vous devez utiliser le surcharge de format de chaîne que prend un cultureInfo code> objet . Le nom de la culture pour le suédois est "SV-SE", comme on peut le voir ici .

decimal value = -16325.62m;
Console.WriteLine(value.ToString(CultureInfo.CreateSpecificCulture("sv-SE")));


2 commentaires

Virtuel +1, malheureusement, je suis hors des votes aujourd'hui. Mais sachez que vous l'avez gagné. :)


+1 pour la solution canonique. Il est important de noter que ce n'est pas seulement la solution pour Formatage , mais aussi pour Ansing numéros.



5
votes

Vous ne savez pas que 100,00.56 représente, avez-vous voulu dire 10.000 56? de
Pour répondre à votre question:

Pour une telle tâche simple, pourquoi utiliser regex? Vous pouvez le faire beaucoup plus facilement: xxx

modifier Je suis d'accord avec @oded, pour les numéros de formatage Utilisez la classe cultureInfo


3 commentaires

100,00.56 est une représentation anglaise, 10.000,56 - Suède / russe / etc


@ABati: Je pense qu'il parlait du fait que les exemples de l'OP n'ont que deux chiffres entre les milliers de séparateur et le séparateur décimal. C'est probablement juste une faute de frappe.


Fixe Dummycharne sera une variable non littérale dans la dernière ligne.



5
votes

Regardez également

System.Globalization.CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator


0 commentaires

3
votes

Ne comptez pas sur REGEXP pour ce genre de chose :) Utilisez la construction dans les cultures FX:

decimal s = decimal.Parse("10,000.56", NumberStyles.Currency, CultureInfo.GetCultureInfo("en-US"));
string output = s.ToString("N",CultureInfo.GetCultureInfo("da-DK"));


0 commentaires

6
votes

Pas une solution de regex, mais de mon expérience - plus correct: xxx

Que fait cette méthode? Il garantit que, si une chaîne est donnée, la chaîne de Suède est incorrecte mais est correcte anglais - convertir en Suède, par exemple. 100,00 -> 100,00 mais 100.00 -> 100,00 .


0 commentaires