Distinguishing between all-uppercase and all-lowercase strings
You can use theswitch
statement to look for a particular string. Normally, you use the switch
statement to compare a counting number to some set of possible values; however, switch
does work on string
objects as well. This version of the termination section in BuildASentence
uses the switch
construct:switch(line)
{
case "EXIT":
case "exit":
case "QUIT":
case "quit":
return true;
}
return false;
This approach works because you’re comparing only a limited number of strings. The for
loop offers a much more flexible approach for searching for string values. Using the case-less Compare()
gives the program greater flexibility in understanding the user.
Converting a string to upper- or lowercase
Suppose you have a string in lowercase and need to convert it to uppercase. You can use theToUpper()
method:string lowcase = "armadillo";
string upcase = lowcase.ToUpper(); // ARMADILLO.
Similarly, you can convert uppercase to lowercase with ToLower()
.
What if you want to convert just the first character in a string to uppercase? The following rather convoluted code will do it:
string name = "chuck";
string properName =
char.ToUpper(name[0]).ToString() + name.Substring(1, name.Length - 1);
The idea in this example is to extract the first char
in name
(that’s name[0]
), convert it to a one-character string with ToString()
, and then tack on the remainder of name
after removing the old lowercase first character with Substring()
.
You can tell whether a string is uppercased or lowercased by using this scary-looking if
statement:
if (string.Compare(line.ToUpper(CultureInfo.InvariantCulture),
line, false) == 0) ... // True if line is all upper.
Here the Compare()
method is comparing an uppercase version of line
to line
itself. There should be no difference if line
is already uppercase. The CultureInfo.InvariantCulture
property tells Compare()
to perform the comparison without considering culture. You can read more about it at Microsoft.com. If you want to ensure that the string contains all lowercase characters, stick a not (!
) operator in front of the Compare()
call. Alternatively, you can use a loop.