# 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;
}
```