알파벳 순서를 유지하면서 숫자로 문자열 정렬
숫자이지만 정수로 변환할 수 없는 문자열 정렬 문제를 해결하려면 다음을 수행할 수 있습니다. 사용자 정의 정렬 알고리즘을 구현합니다. 방법은 다음과 같습니다.
public class SemiNumericComparer : IComparer<string> { public static bool IsNumeric(string value) => int.TryParse(value, out _); public int Compare(string s1, string s2) { const int S1GreaterThanS2 = 1; const int S2GreaterThanS1 = -1; var isNumeric1 = IsNumeric(s1); var isNumeric2 = IsNumeric(s2); // Handle numeric comparisons if (isNumeric1 && isNumeric2) { var i1 = Convert.ToInt32(s1); var i2 = Convert.ToInt32(s2); return i1 > i2 ? S1GreaterThanS2 : (i1 < i2 ? S2GreaterThanS1 : 0); } // Handle mixed numeric and non-numeric comparisons if (isNumeric1) return S2GreaterThanS1; if (isNumeric2) return S1GreaterThanS2; // Handle alphabetical comparisons return string.Compare(s1, s2, true, CultureInfo.InvariantCulture); } }
string[] things = new string[] { "paul", "bob", "lauren", "007", "90", "101" }; foreach (var thing in things.OrderBy(x => x, new SemiNumericComparer())) { Console.WriteLine(thing); }
이 접근 방식을 사용하면 숫자를 고려하면서 문자열을 알파벳순으로 정렬할 수 있습니다. 값을 입력하여 원하는 결과를 얻습니다.
007 90 bob lauren paul
위 내용은 알파벳 순서를 유지하면서 문자열을 숫자순으로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!