Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# string format flag or modifier to lowercase param

Is it possible to specify some kind of flag or modifier on a string format param to make it lower case or upper case?

Example of what I want:

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

Wanted output:

Hi JOHN, you have 6 apples.

PS: Yes I know that I can change the case of the param before using it in the string format, but I don't want this.

like image 971
rjlopes Avatar asked Dec 03 '09 12:12

rjlopes


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

What is C in C language?

What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.

Is C language easy?

C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.


2 Answers

There's only padding and allignment formating... So the easy way is like you said, use "John".ToUpper() or "John".ToLower().

Another solution could be create a custom IFormatProvider, to provide the string format you want.

This is how will look the IFormatProvider and the string.Format call.

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

And the call will look like:

String.Format(new CustomStringFormat(), "Hi {0:U}", "John"); 
like image 110
Guido Zanon Avatar answered Oct 11 '22 13:10

Guido Zanon


In short, no; AFAIK you'd have to fix the source values, or use your own replacement to string.Format. Note that if you are passing in a custom culture (to string.Format) you may want to use culture.TextInfo.ToLower(s), rather than just s.ToLower().

like image 24
Marc Gravell Avatar answered Oct 11 '22 12:10

Marc Gravell