private static ComparableList <StringElement> convertString(string str) { var result = new ComparableList <StringElement>(); StringBuilder numberBuilder = new StringBuilder(); foreach (char ch in str) { if (!Char.IsDigit(ch)) { if (numberBuilder.Length > 0) { result.Add(new StringElement(int.Parse(numberBuilder.ToString()))); numberBuilder.Clear(); } if (ch != ' ') { result.Add(new StringElement(ch)); } } else { numberBuilder.Append(ch); } } if (numberBuilder.Length > 0) { result.Add(new StringElement(int.Parse(numberBuilder.ToString()))); } return(result); }
public int CompareTo(ComparableList <T> other) { var enu1 = this.GetEnumerator(); var enu2 = other.GetEnumerator(); bool enu1HasNext = true, enu2HasNext = true; while (true) { if (!enu1.MoveNext()) { enu1HasNext = false; } if (!enu2.MoveNext()) { enu2HasNext = false; break; } if (!enu1HasNext) { break; } int val = enu1.Current.CompareTo(enu2.Current); if (val != 0) { return(val); } } if (enu1HasNext && !enu2HasNext) { return(1); } if (!enu1HasNext && enu2HasNext) { return(-1); } return(0); }
public ComparableString(string value) { this.value = convertString(value); }