text: Pangrams in .NET
  Introduction
  Letters form words. Words form sentences. Sentences form paragraphs. Paragraphs form books. Books form libraries. Each language makes use of its own letters and symbols, but each language does have similarities when it comes to writing.
  Each language contains vowels and consonants and basic language elements. Each language also contains "special" sentences or words. Today, I would like to introduce to you the pangram and how to test whether a sentence is a pangram in your .NET applications. Obviously, there are many more "special" words and sentences, and I will give a little background on those that I know of as well.
  Pangram
  The sentence "The quick brown fox jumps over the lazy dog." is the best known pangram and is usually associated with displaying font styles. The sentence has actually been used since at least the late 19th century. Some pangrams make less sense as people try to use only the 26 letters of the alphabet. The longer the pangram, the more it makes sense; the shorter, not so much. Here is an example of both:
  Short
  Bright vixens jump; dozy fowl quack.
  Long
  Jim quickly realized that the beautiful gowns are expensive.
  The short sentence is understandable, but seems forced whereas the longer sentence is quite understandable. For a decent list of pangrams in the English language, have a look here.
  Lipogram
  The word lipogram comes from the Greek phrase leipográmmatos, which means "leaving out a letter." A lipogram is a type of constrained writing in which a particular letter or group of letters is avoided. Albert Ross Eckler Jr. rewrote the famous poem "Mary had a little lamb" a few times with each time omitting a crucial letter, as seen next:
  Missing "E":
  Mary had a tiny lamb
  Its wool was pallid as snow
  And any spot that Mary did walk
  This lamb would always go
  This lamb did follow Mary to school
  Although against a law
  How girls and boys did laugh and play
  That lamb in class all saw
  Missing "H":
  Mary owned a little lamb
  Its fleece was pale as snow
  And every place its mistress went
  It would certainly go
  It followed Mary to class one day It broke a rigid law
  It made some students giggle aloud
  A lamb in class all saw
  Anagram
  An anagram is a word, phrase, or sentence formed by rearranging the letters of a different word or phrase, while using all the original letters. Some examples include:
  - arc = car
  - state = taste
  - dusty = study
  - Night = thing
  - inch = chin
  - brag = grab
  - cat = act
  - stressed = desserts
  - dormitory = dirty Room
  - a decimal point = I'm a dot in place
  Isogram
  An isogram (non-pattern word) is a word or phrase without a repeating letter. A few examples follow:
  - campground
  - disturbance
  - incomputable
  - unsympathized
  - hydropneumatic
  - subdermatoglyphic
  Heterogram
  A heterogram (different written) is a word, phrase, or sentence in which no letter of the alphabet occurs more than once. Some examples:
  - certainly
  - flowchart
  - overmatch
  - prelaunch
  - replaying
  - squawking
  - traveling
  - vectorial
  Other
  There are more "special" words, phrases and sentences like the following:
  Our Project
  The aim of today's little project is to determine whether or not the text input makes a pangram. It will also show the letters that have not been used.
  Open Visual Studio and create either a C# or a Visual Basic.NET Windows Forms application. Design your form as shown in Figure 1.
  Figure 1: Design
  The form contains one TextBox and two Labels. The labels' Text will be changed once the program is running.
  Import the System.Text namespace to work with StringBuilders:
  C#
  using System.Text;
  VB.NET
  Imports System.Text
  Declare the following objects:
  C#
  private string strLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private string strPunctuation = " .,-:;!?'\"()[]{}/"; private StringBuilder sbPangram = new StringBuilder();
  VB.NET
  Private strLetters As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" Private strPunctuation As String = " .,-:;!?'""()[]{}/" Private sbPangram As New StringBuilder
  Here, you create objects to hold the English alphabet, punctuation marks, and create the StringBuilder object that will hold the pangram.
  Add the following code inside the TextBox's TextChanged event.
  C#
  private void txtPangram_TextChanged(object sender, EventArgs e) { StringBuilder sbMissing = new StringBuilder(); sbPangram = new StringBuilder(txtPangram.Text.ToUpper()); foreach (char cp in strPunctuation) sbPangram.Replace(cp.ToString(), "".ToString()); lblLetterCount.Text = "Total Letters = " + sbPangram.Length.ToString(); foreach (char ch in strLetters.ToCharArray()) { if (!sbPangram.ToString().Contains(ch)) { sbMissing.Append(ch); sbMissing.Append(" "); } } lblMissing.Text = sbMissing.ToString(); }
  VB.NET
  Private Sub txtPangram_TextChanged(sender As Object, _ e As EventArgs) Handles txtPangram.TextChanged Dim sbMissing As New StringBuilder sbPangram = New StringBuilder(txtPangram.Text.ToUpper) For Each cp As Char In strPunctuation sbPangram.Replace(cp, "") Next lblLetterCount.Text = "Total Letters = " & sbPangram.Length.ToString For Each ch As Char In strLetters.ToCharArray If Not sbPangram.ToString.Contains(ch) Then sbMissing.Append(ch) sbMissing.Append(" ") End If Next lblMissing.Text = sbMissing.ToString End Sub
  You created a new StringBuilder object to hold the letters still needed to complete the pangram. You then changed the case of the pangram to all uppercase and replaced any punctuation marks with an empty string.
  In the For Each loop, you determined which letters are still needed to complete the pangram and display them on the label named lblMissing.
  Figure 2 shows the program in action.
  Figure 2: Running
  Conclusion
  Not only did you learn a lot about the English language, you also learned how to manipulate your .NET code to manipulate the English language. I hope you have found today's article interesting. I do like to explain non-technical stuff too, as you saw, but by doing that it provides a greater context to the .NET code.