Comment Conditionnellement Format d'une Chaîne .Net?
Je voudrais faire une condition de formatage de chaînes de caractères. Je sais que vous pouvez faire un peu de mise en forme conditionnelle des nombres entiers et décimaux comme suit:
Int32 i = 0;
i.ToString("$#,##0.00;($#,##0.00);Zero");
Le code ci-dessus entraînerait dans un des trois formats si la variable est positif, négatif ou nul.
Je voudrais savoir si il existe un moyen d'utiliser des sections sur les arguments de la chaîne. Pour un béton, mais artificiel exemple, je serais à la recherche pour remplacer le "si" vérifier dans le code suivant:
string MyFormatString(List<String> items, List<String> values)
{
string itemList = String.Join(", " items.ToArray());
string valueList = String.Join(", " values.ToArray());
string formatString;
if (items.Count > 0)
//this could easily be:
//if (!String.IsNullOrEmpty(itemList))
{
formatString = "Items: {0}; Values: {1}";
}
else
{
formatString = "Values: {1}";
}
return String.Format(formatString, itemList, valueList);
}
Vous devez vous connecter pour publier un commentaire.
Bien, vous pouvez simplifier un peu avec l'opérateur conditionnel:
Ou même inclure dans la même déclaration:
Est-ce que vous êtes après? Je ne pense pas que vous pouvez avoir une seule chaîne de format qui inclut parfois bits et parfois ça ne marche pas.
if
dans ce contexte est absolument étrange. 1. Que faire si il y a un troisième cas? 2. Que pensez-vous atteindre par cette approche - 2 lignes de code plus court?if
déclaration. À l'aide d'un conditionnel donne l'extra indice pour le lecteur que tous ce qui change, c'est l'évaluation d'une expression unique.f(g(x))
travail exigef
plus complexe. Si les deux f(x) etf(g(x))
de travail pour toutes les valeurs dex
, puisg
doit être une fonction d'identification. En supposant que ce n'est pas de quoi vous parlez, vous avez besoin de clarifier ce que vous voulez dire.Pas dans la Corde.Format(), mais vous pouvez utiliser le C#'s inline opérateurs, tels que:
Cela permettrait de ranger le code.
Tandis que ne pas répondre à l'OP, directement, ce ne tombent dans la propriété ainsi.
J'ai souvent besoin de chaînes de format avec une certaine mesure, à l'unité, mais dans le cas où je n'ai pas de données, je ne veux pas de sortie du tout. - Je l'utiliser avec différents types nullables:
Par exemple, si je suis mise en forme des températures comme "20°C", mais la rencontre d'une valeur null, il permet d'imprimer une autre chaîne, au lieu de "°C".
Ne le faites pas. Je n'ai aucune idée de ce que sont les objets et les valeurs dans le code, mais je crois que, cette paire pourrait être traitée comme une entité quelconque. Définir cette entité en tant que classe, et de remplacer son
ToString()
méthode pour retourner tout ce que vous voulez. Il n'y a absolument rien de mal à avoirif
pour décider de la façon de format de cette chaîne de caractères en fonction d'un contexte.Ce n'est probablement pas ce que vous cherchez, mais que diriez -...
J'espère que ce pourrait le faire:
Malheureusement, il semble que l' .La méthode ToString() n'aime pas le vide négatif et nul options ou de ne pas avoir un # ou 0 partout. Je vais laisser ici, dans le cas des points de quelqu'un d'autre pour une meilleure réponse.