Indicateur ou modificateur de format de chaîne C # en minuscule

Est-il possible de spécifier un type de drapeau ou un modificateur sur un paramètre de format de chaîne pour le rendre en minuscule ou en majuscule?

Exemple de ce que je veux:

Ssortingng.Format("Hi {0:touppercase}, you have {1} {2:tolowercase}.", "John", 6, "Apples"); 

Résultat recherché:

Salut JOHN, tu as 6 pommes.

PS: Oui je sais que je peux changer la casse du param avant de l’utiliser dans le format ssortingng, mais je ne le veux pas.

Il n’y a que le remplissage et la création d’allignements … Donc, la manière facile est comme vous l’avez dit, utilisez "John".ToUpper() ou "John".ToLower() .

Une autre solution pourrait être de créer un IFormatProvider personnalisé pour fournir le format de chaîne souhaité.

Voici comment vous allez chercher l’ IFormatProvider et l’appel ssortingng.Format.

 public class CustomSsortingngFormat : IFormatProvider, ICustomFormatter { public object GetFormat(Type formatType) { if (formatType == typeof(ICustomFormatter)) return this; else return null; } public ssortingng Format(ssortingng format, object arg, IFormatProvider formatProvider) { ssortingng result = arg.ToSsortingng(); switch (format.ToUpper()) { case "U": return result.ToUpper(); case "L": return result.ToLower(); //more custom formats default: return result; } } } 

Et l’appel ressemblera à:

 Ssortingng.Format(new CustomSsortingngFormat(), "Hi {0:U}", "John"); 

En bref, non; AFAIK vous devez corriger les valeurs source, ou utiliser votre propre remplacement à ssortingng.Format . Notez que si vous transmettez une culture personnalisée (à ssortingng.Format ), vous pouvez utiliser culture.TextInfo.ToLower(s) , plutôt que simplement s.ToLower() .