Sort

변수의 내용을 알파벳, 숫자, 또는 무작위 순서로 정렬합니다 (선택적으로 중복을 제거합니다).

Sort, VarName , Options

매개변수

VarName

그의 내용이 정렬될 변수의 이름. 이 변수는 표현식이 불가능합니다.

Options

아래 리스트 참조.

Options

다른 기호로 구성되는 문자열 (순서에 상관없이, 사이에 선택적으로 스페이스 허용):

C: 대소문자 구분 정렬 (N 옵션도 존재하면 무시됩니다). CCL이 모두 생략되면, 대문자 A-Z는 정렬의 목적으로 소문자와 동일하다고 간주합니다.

CL [v1.0.43.03+]: 현재 사용자의 로케일에 기반하여 대소문자를 구분하여 정렬합니다. 예를 들어, 대부분의 영어와 서구 유럽 로케일은 기호 A-Z 그리고 Ä와 Ü 같은 ANSI 기호들을 소문자로 취급합니다. 이 방법은 또한 "word sort"를 사용하는데, 이것은 "coop" 그리고 "co-op"와 같은 단어들이 함께 있는 것처럼 하이픈과 어포스트로피를 취급합니다. 현재 정렬 중인 항목의 내용에 따라, 수행성능은 기본적인 대소문자 비구분 방법에 비해 1배에서 8 배까지 나쁠 수 있습니다.

Dx: 구분 문자로 x를 지정합니다. 구분 문자는 VarName에서 각 항목이 시작되고 끝나는 곳을 결정합니다. The delimiter is always case-sensitive. If this option is not present, x defaults to linefeed (`n). In most cases this will work even if lines end with CR+LF (`r`n), but the carriage return (`r) is included in comparisons and therefore affects the sort order. For example, B`r`nA will sort as expected, but A`r`nA`t`r`nB will place A`t`r before A`r.

F MyFunction [v1.0.47+]: MyFunction에 있는 기준에 맞게 맞춤 정렬합니다 (물론 정렬 시간은 더 길어집니다). 기호 "F" 다음에 선택적으로 스페이스/탭과 그리고 리스트의 두 항목을 비교하는 데 사용될 함수의 이름을 지정하십시오. 함수는 두 개 또는 세 개의 매개변수를 받아야 합니다. 함수가 첫 번째 매개변수를 두 번째 보다 크다고 생각하면, 양의 정수를 돌려줄 것입니다. 두 매개변수가 같다고 생각하면 0 또는 ""을 돌려주거나 아니면 아무것도 돌려주지 않습니다; 그렇지 않으면, 음의 정수를 돌려줍니다. 소수 점이 반환된 값에 존재하면, 그 부분은 무시됩니다 (즉, 0.8은 0과 같습니다). 존재하면, 세 번째 매개변수는 원본/정렬되지 않은 리스트에 보여지는 (예제 참조) 첫 번째 항목으로부터 두 번째 항목의 상대거리를 받습니다 (문자 단위). 마지막으로, 이 함수는 그를 호출한 Sort 명령어와 같은 전역 설정을 사용합니다 (예, StringCaseSense).

주의: F 옵션에서 모든 옵션은 D, Z, 그리고 U를 제외하고 무시됩니다 (물론 N, C, 그리고 CL은 여전히 중복을 탐지하는 방식에 영향을 미칩니다). 또한, 정렬은 일어나지 않습니다. 지정된 함수가: 1) 존재하지 않거나; 2) 매개변수를 두 개 미만으로 받을 때; 3) 또는 첫 번째 또는 두 번째 매개변수가 ByRef일 때.

N: 숫자순 정렬: 각 항목은 문자열이 아니라 숫자로 간주됩니다 (예를 들어, 이 옵션이 존재하지 않으면, 알파벳 순서이기 때문에 문자열 233은 문자열 40보다 작다고 간주됩니다.). 십진 문자열과 십육진 문자열 모두 (예,. 0xF1) 숫자로 간주됩니다. 숫자로 시작하지 않는 문자열은 정렬의 목적으로 0이라고 간주합니다. 숫자는 64-비트 부동 소수점 수로 간주합니다. (있다면) 각 숫자의 소수 부분도 고려됩니다.

Pn: 문자 위치 n에 기반하여 항목들을 정렬합니다 (n에 십육진 수를 사용하지 마십시오). 이 옵션이 존재하지 않으면, n 은 기본값이 1입니다. 이것은 첫 문자의 위치입니다. 정렬은 각 문자열을 다른 문자열에 그의 n번째 문자부터 비교합니다. n이 문자열의 길이보다 더 크면, 그 문자열은 정렬의 목적으로 비어 있다고 간주합니다. N (숫자 정렬) 옵션과 함께 사용될 때, 이 문자열의 위치가 사용됩니다. 반드시 그 숫자의 자리 위치와 같아야 할 필요는 없습니다.

R: 역순으로 정렬합니다 (다른 옵션에 따라 알파벳 또는 숫자 순서로).

Random: 무작위 순서로 정렬합니다. 이 옵션 때문에 D, Z, 그리고 U를 제외하고 다른 모든 옵션은 무시됩니다 (물론 N, C, 그리고 CL은 여전히 중복을 탐지하는 방식에 영향을 미칩니다). 예제:

Sort, MyVar, Random
Sort, MyVar, Random Z D|

U: 모든 항목이 유일하도록 리스트로부터 중복 항목을 제거합니다. ErrorLevel은 제거된 항목의 개수가 설정됩니다 (없으면 0). C 옵션이 켜져 있으면, 항목의 대소문자가 반드시 일치해야 동일하다고 간주합니다. N 옵션이 켜져 있으면, 2 같은 항목은 2.0과 중복이라고 간주합니다. Pn 또는 \ (역사선) 옵션이 켜져 있으면, 정렬에 사용된 부문자열이 아니라 전체 항목이 중복이어야 합니다. Random 또는 F/Function 옵션이 켜져 있으면, 정렬의 결과로 서로 인접하게 나타날 때만 중복이 제거됩니다. 예를 들어, "A|B|A"를 무작위 순서로 정렬할 때, 그 결과는 A가 한 개 또는 두 개가 담길 수 있습니다.

Z: 이 옵션을 이해하려면, 변수에 "RED`nGREEN`nBLUE`n"가 담겨 있다고 생각해 보십시오. Z 옵션이 존재하지 않으면, 마지막 라인피드 (`n)는 마지막 항목의 일부분으로 간주됩니다. 그리하여 3 개의 항목만 있습니다. 그러나 Z 옵션을 지정하면, 마지막의 `n (존재하면)은 리스트 마지막의 빈 항목을 구분한다고 간주됩니다. 그리하여 4 개의 항목이 있습니다 (마지막 항목은 비어 있습니다).

\: 각각의 마지막 역사선 다음에 오는 부문자열에 기반하여 항목들을 정렬합니다. 항목에 역사선이 없으면, 전체 항목이 부문자열로 사용됩니다. 이 옵션은 파일 이름만 정렬할 때 유용합니다 (즉, 경로 제외). 아래의 예제와 같은 경우, AAA.txt 줄은 BBB.txt 줄보다 위에 정렬됩니다. 왜냐하면 정렬의 목적으로 디렉토리는 무시하기 때문입니다:

C:\BBB\AAA.txt
C:\AAA\BBB.txt

주의: Options N 그리고 P는 역사선 옵션이 존재하면 무시됩니다.

논평

이 명령어는 전형적으로 줄 리스트를 담고 있는 변수를 정렬하는 데 사용됩니다. 줄 리스트는 각 줄이 라인피드 문자 (`n)로 끝납니다. 줄 리스트를 변수 안에 넣는 방법은 전체 파일을 FileRead를 통하여 적재하는 것입니다.

VarNameClipboard이고 그 클립보드 안에는 파일들이 담겨 있습니다 (예를 들어 열린 탐색 창으로부터 복사된 파일들). 그런 파일들은 정렬된 리스트로 교체됩니다. 다른 말로, 연산이 끝나면 클립보드에는 더 이상 파일 자체가 남아 있지 있습니다.

ErrorLevelU 옵션이 켜져 있을 때만 이 명령어로 바뀝니다.

변수의 최대 가용 능력은 #MaxMem를 통하여 증가시킬 수 있습니다.

방대한 변수를 정렬했고 나중에 그의 내용이 더 이상 필요하지 않으면, 비워서 그의 메모리를 해제할 수 있습니다. 예, MyVar =.

FileRead, 파일-읽기 회돌이, 파싱 회돌이, StrSplit(), RegisterCallback(), 클립보드, #MaxMem, StringSplit

예제

Sorts a comma-separated list of numbers.

MyVar := "5,3,7,9,1,13,999,-4"
Sort MyVar, N D,  ; 숫치로 정렬합니다. 쉼표를 구분자로 사용합니다.
MsgBox %MyVar%   ; 결과는 -4,1,3,5,7,9,13,999입니다

Sorts the contents of a file.

FileRead, Contents, C:\Address List.txt
if not ErrorLevel  ; 성공적으로 적재됨.
{
    Sort, Contents
    FileDelete, C:\Address List (alphabetical).txt
    FileAppend, %Contents%, C:\Address List (alphabetical).txt
    Contents := ""  ; 메모리를 풀어줍니다.
}

Makes a hotkey to copy files from an open Explorer window and put their sorted filenames onto the clipboard.

#c:: ; Win+C
Clipboard := "" ; 탐지가 작동하려면 반드시 비어 있어야 합니다.
Send ^c
ClipWait 2
if ErrorLevel
    return
Sort Clipboard
MsgBox Ready to be pasted:`n%Clipboard%
return

역호출 함수를 통하여 맞춤 정렬을 보여줍니다.

MyVar := "def`nabc`nmno`nFGH`nco-op`ncoop`ncop`ncon`n"
Sort, MyVar, F StringSort
StringSort(a1, a2)
{
    return a1 > a2 ? 1 : a1 < a2 ? -1 : 0  ; StringCaseSense에 기반하여 알파벳 순으로 정렬합니다.
}

MyVar := "5,3,7,9,1,13,999,-4"
Sort, MyVar, F IntegerSort D,
IntegerSort(a1, a2)
{
    return a1 - a2  ; 숫자를 오름 차순으로 정렬합니다. 이 방법은 차이가 부호있는 64-비트 정수를 넘지 않을 때에만 작동합니다.
}

MyVar := "1,2,3,4"
Sort, MyVar, F ReverseDirection D,  ; 안에 4,3,2,1이 들어 있는 리스트를 뒤집습니다.
ReverseDirection(a1, a2, offset)
{
    return offset  ; 원래 리스트에서 a2 가 a1 뒤에 오면 상대거리(Offset)는 양수입니다. 그렇지 않으면 음수입니다.
}