문제:
각 요소가 끝나는 문자열 배열이 제공됩니다. 숫자 값을 사용하는 경우 목표는 숫자 우선순위를 지정하여 영숫자순으로 배열을 정렬하는 것입니다. 각 요소 내에서 순서를 지정합니다.
예:
문자열 배열을 고려합니다.
partNumbers = ["ABC10", "ABC1", "ABC2", "ABC11", "ABC10", "AB1", "AB2", "Ab11"]
LINQ의 OrderBy 메서드를 사용하여 원하는 정렬 결과 is:
["AB1", "AB2", "AB11", ... ]
문제:
그러나 기본 정렬 메커니즘은 숫자를 문자열로 간주하여 다음과 같이 출력됩니다.
["AB1", "Ab11", "AB2", "ABC1", "ABC10", "ABC10", "ABC11", "ABC2"]
해결책:
다음으로 이 문제를 해결하려면 주문 절에서 문자열의 숫자 부분을 채워야 합니다. 이런 식으로 OrderBy는 숫자를 문자열이 아닌 숫자로 간주합니다. 다음 코드 조각은 이 접근 방식을 보여줍니다.
var result = partNumbers.OrderBy(x => PadNumbers(x));
PadNumbers 메서드:
PadNumbers 메서드는 다음과 같이 구현됩니다. 다음:
public static string PadNumbers(string input) { return Regex.Replace(input, "[0-9]+", match => match.Value.PadLeft(10, '0')); }
설명:
이 방법은 최대 숫자 길이를 10으로 가정하고 입력 문자열의 모든 숫자 시퀀스를 식별하고 0으로 채웁니다. 이 패딩은 주문 과정에서 숫자 값이 숫자로 처리되는 반면 원본 문자열 데이터는 보존됩니다.
출력:
PadNumbers 메서드를 사용하면 배열이 다음과 같이 올바르게 정렬됩니다.
["AB1", "AB2", "AB11", ... ]
이 패딩 기술을 적용하면 각 요소 내에서 숫자 값이 우선순위를 갖는 LINQ를 사용하면 정확한 영숫자 정렬을 달성할 수 있습니다.
위 내용은 숫자가 포함된 문자열의 올바른 영숫자 정렬을 위해 LINQ의 OrderBy 메서드를 어떻게 사용할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!