compareNatural function
Compares strings a and b according to natural sort ordering.
A natural sort ordering is a lexical ordering where embedded
numerals (digit sequences) are treated as a single unit and ordered by
numerical value.
This means that "a10b" will be ordered after "a7b" in natural
ordering, where lexical ordering would put the 1 before the 7, ignoring
that the 1 is part of a larger number.
Example: The following strings are in the order they would be sorted by using this comparison function:
"a", "a0", "a0b", "a1", "a01", "a9", "a10", "a100", "a100b", "aa"
Implementation
int compareNatural(String a, String b) {
  for (var i = 0; i < a.length; i++) {
    if (i >= b.length) return 1;
    var aChar = a.codeUnitAt(i);
    var bChar = b.codeUnitAt(i);
    if (aChar != bChar) {
      return _compareNaturally(a, b, i, aChar, bChar);
    }
  }
  if (b.length > a.length) return -1;
  return 0;
}