title: Array.Sort for strings with numbers
body: <p>I have sample codes below:</p>
  
  <pre><code>List&lt;string&gt; test = new List&lt;string&gt;();
  test.Add("Hello2");
  test.Add("Hello1");
  test.Add("Welcome2");
  test.Add("World");
  test.Add("Hello11");
  test.Add("Hello10");
  test.Add("Welcome0");
  test.Add("World3");
  test.Add("Hello100");
  test.Add("Hello20");
  test.Add("Hello3");
  
  test.Sort();
  </code></pre>
  
  <p>But what happen is, the <code>test.Sort</code> will sort the array to: </p>
  
  <pre><code>"Hello1", 
  "Hello10", 
  "Hello100", 
  "Hello11", 
  "Hello2", 
  "Hello20", 
  "Hello3", 
  "Welcome0", 
  "Welcome2", 
  "World", 
  "World3"
  </code></pre>
  
  <p>Is there any way to sort them so that the <code>string</code> will have the correct number order as well?
   (If there is no number at the end of the <code>string</code>, that <code>string</code> will always go first - after the alphabetical order)</p>
  
  <p>Expected output: </p>
  
  <pre><code>"Hello1", 
  "Hello2", 
  "Hello3", 
  "Hello10", 
  "Hello11", 
  "Hello20", 
  "Hello100", 
  "Welcome0", 
  "Welcome2", 
  "World", 
  "World3"
  </code></pre>