40 votes

Puis-je formater les valeurs NULL en chaîne. Format?

Je me demandais si il y a une syntaxe pour la mise en forme des valeurs NULL dans la chaîne.Format, comme ce qu'Excel utilise

Par exemple, à l'aide d'Excel je pourrais spécifier un format de valeur de {0:#,000.00;-#,000.00,NULL}, ce qui signifie que l'affichage de la valeur numérique en tant que format de nombre si le résultat est positif, le format des nombres entre parenthèses si le résultat est négatif, ou NULL si la valeur est null

string.Format("${0:#,000.00;(#,000.00);NULL}", someNumericValue);

Modifier

Je suis à la recherche pour le formatage NULL/Nothing des valeurs pour tous les types de données, et pas seulement numériques.

Mon exemple est en fait incorrect parce que j'ai tort, Excel utilisé le 3e paramètre si la valeur est NULLE, mais c'est en fait utilisé lorsque la valeur est 0. Je vais la laisser là parce que c'est la chose la plus proche que je peux penser à ce que j'espérais faire.

Je suis l'espoir d'éviter le nul de la coalescence de l'opérateur parce que je suis en train d'écrire des enregistrements de journal, et les données n'est généralement pas une chaîne

Il serait beaucoup plus facile d'écrire quelque chose comme

Log(string.Format("Value1 changes from {0:NULL} to {1:NULL}", 
    new object[] { oldObject.SomeValue, newObject.SomeValue }));

que de l'écrire

var old = (oldObject.SomeValue == null ? "null" : oldObject.SomeValue.ToString());
var new = (newObject.SomeValue == null ? "null" : newObject.SomeValue.ToString());

Log(string.Format("Value1 changes from {0} to {1}", 
    new object[] { old, new }));

33voto

dtb Points 104373

Vous pouvez définir une formatter personnalisée qui retourne si la valeur est et autrement la chaîne formatée par défaut, par exemple :

Sortie:

Formatter personnalisé:

12voto

Jim Mischel Points 68586

Je ne pense pas qu'il y ait quoi que ce soit qui vous permettra de spécifier un format particulier pour les ```` cordes. Une contournement consiste à utiliser l'opérateur de null-coalescing, comme ceci:

2voto

Karel Points 1047

C'est ce que tu veux ?

Test?? "NULL"

1voto

mellamokb Points 34067

Il ressemble à String.Format pour .NET agit de la même manière que Excel, c'est-à-dire, vous pouvez utiliser le séparateur pour les `` valeurs positives, négatives, et 0, mais pas NULL: http://msdn.microsoft.com/en-us/library/0c899ak8.aspx#SectionSeparator.

Vous aurez probablement juste à gérer la valeur nulle manuellement:

0voto

Black White Points 1

Vous pouvez utiliser une méthode d'extension :

Ensuite, dans votre code, vous pouvez faire:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X