web-dev-qa-db-fra.com

Format de chaîne par CultureInfo

Je veux afficher le signe dièse et le format 0,00, soit 45,00 £, 4,10 £. J'utilise la déclaration suivante:

<td style="text-align:center"><%# Convert.ToString(Convert.ToSingle(Eval("tourOurPrice")) / Convert.ToInt32(Eval("noOfTickets")), new System.Globalization.CultureInfo("en-GB")) %></td>

Mais ça ne marche pas. Quel est le problème.

Quelqu'un peut-il m'aider???

37
Waheed

Utilisez la chaîne de format standard Currency avec la méthode string.Format qui prend un fournisseur de format:

string.Format(new System.Globalization.CultureInfo("en-GB"), "{0:C}", amount)

CultureInfo peut agir en tant que fournisseur de format et vous obtiendra également le bon symbole monétaire pour la culture.

Votre exemple se lirait alors (espacé de lisibilité):

<td style="text-align:center">
    <%# string.Format(new System.Globalization.CultureInfo("en-GB"), 
                      "{0:C}", 
                      Convert.ToSingle(Eval("tourOurPrice")) 
                             / Convert.ToInt32(Eval("noOfTickets")))
    %>
</td>
85
adrianbanks

Que diriez-vous

<%# (Convert.ToSingle(Eval("tourOurPrice")) / Convert.ToInt32(Eval("noOfTickets"))).ToString("C", New System.Globalization.CultureInfo("en-GB")) %>
3
Patrick McDonald

Essayez de spécifier le format de devise exact

String.Format(...CultureInfo("en-GB"), "{0:C}"....
2
Dewfy

Je voulais ajouter une réponse connexe supplémentaire pour montrer comment utiliser un objet CultureInfo cloné dans un string.Format () ou StringBuffer.AppendFormat (). Au lieu de monnaie cependant, mon besoin était de formater l'indicateur AM/PM pour le guide de style de mon employeur. Voici ce que j'ai fait:

var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.DateTimeFormat.AMDesignator = "a.m.";
culture.DateTimeFormat.PMDesignator = "p.m.";
....
var msg = new StringBuilder();
msg.AppendFormat(culture,"Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified);

Vous pouvez faire la même chose avec string.Format ():

string strMsg = string.Format(culture, "Last modified: {0:M/d/yyyy h:mm tt}", ad.DateModified);
1
Mark

Cela devrait fonctionner:

<td style="text-align:center">
<%# String.Format( new System.Globalization.CultureInfo("en-GB"), "{0:c}", Convert.ToSingle(Eval("tourOurPrice")) / Convert.ToInt32(Eval("noOfTickets")) %>
</td>
1
Phaedrus