StringSplit

문자열을 지정된 가름자를 사용하여 부분 문자열 배열로 가릅니다.

비추천: 이 명령어는 새 스크립트에 사용을 추천하지 않습니다. 대신 StrSplit 기능을 사용하십시오.

StringSplit, OutputArray, InputVar , Delimiters, OmitChars

매개변수

OutputArray

InputVar로부터 추출된 각 부문자열을 저장할 의사-배열의 이름. 예를 들어, MyArray가 지정되면, 이 명령어는 생산된 부문자열의 개수를 (없으면 0) MyArray0에 배치합니다. 첫 번째 부분자열은 MyArray1에, 두 번째 부문자열은 MyArray2에, 등등 배치합니다.

함수 안에서, 지역이 아니라 전역적인 의사-배열을 생성하려면, 함수 안에서 MyArray0를 전역 변수로 선언하십시오 (전역-간주 함수에 대하여 그 반대도 마찬가지입니다). 그렇지만, 흔한 혼란의 근원 때문에 각 원소마다 선언할 필요가 있는 경우도 있습니다. 더 자세한 정보는 함수를 참조하십시오.

InputVar

The name of the input variable whose contents will be analyzed. 이름을 퍼센트 사인으로 둘러 싸지 마십시오. 변수의 내용을 이름으로 사용하고 싶다면 예외입니다.

주의: InputVarOutputArray 안에 있는 변수 중 하나가 되어야 합니다.

Delimiters

이 매개변수가 비어 있거나 생략되면, InputVar의 각 문자는 별도의 부문자열로 간주됩니다.

그렇지 않으면, Delimiters에는 하나 이상의 문자가 담깁니다 (대소문자 구별), 각 문자마다 InputVar에서 부문자열이 일어나는 경계를 결정합니다. 구분 문자들은 부문자열의 일부분으로 간주되지 않기 때문에, OutputArray에 절대로 복사되지 않습니다. 또한, InputVar 안에서 구분자 사이에 아무 것도 없으면, 그에 상응하는 원소는 빈 원소입니다.

예를 들어: `, (피신된 쉼표)는 문자열을 쉼표가 출현할 때마다 가릅니다. 비슷하게, "%A_Tab%%A_Space%"는 InputVar 안에서 스페이스나 탭을 만날 때마다 새로운 배열 원소를 생성합니다.

To use a string as a delimiter rather than a character, first use StrReplace() or StringReplace to replace all occurrences of the string with a single character that is never used literally in the text. 다음 예제를 연구해 보십시오. 문자열 <br>을 구분자로 사용합니다:

StringReplace, NewHTML, HTMLString, <br>, ``, All  ; <br>이 나타날 때마다 액센트 문자로 바꿉니다.
StringSplit, MyArray, NewHTML, ``  ; 액센트 문자에 기반해 문자열을 가릅니다.
OmitChars

각 배열 원소의 앞과 뒤로부터 배제할 문자열의 리스트 (대소문자 구분, 선택적). For example, if OmitChars is %A_Space%%A_Tab%, spaces and tabs will be removed from the beginning and end (but not the middle) of every element.

Delimiters가 비어 있으면, OmitChars는 배열로부터 어느 문자를 배제해야 하는지를 나타냅니다.

대부분의 다른 명령어의 마지막 매개변수와 다르게, OmitChars에서 쉼표는 반드시 피신시켜야 합니다 (`,).

논평

의사 배열이 이미 존재하면, 명령어는 앞쪽부터 N개의 원소의 값만 변경합니다. 여기에서 N은 InputVar에서 출현하는 부문자열의 개수입니다. N 번째 이후의 원소는 변경되지 않습니다. 그러므로, 얼마나 많은 항목이 실제로 이 명령어로 생산되었는가를 알아내려면, 0 원소를 사용하는 것이 가장 안전합니다 (MyArray0).

스페이스와 탭 같은 공백 문자들은 유지됩니다. 단, 그 문자 자체가 구분자이거나 OmitChars에 포함되는 경우는 예외입니다. 탭과 스페이스는 변수 양끝으로부터 걷어낼 수 있습니다. AutoTrim이 켜져 있는 (기본값) 상태에서 할당하면 됩니다. 예를 들어: MyArray1 = %MyArray1%.

표준 CSV (쉼표로 가른 값(comma separated value)) 형식의 문자열을 가르려면, 파싱 회돌이를 사용하십시오. CSV 처리가 내장되어 있습니다.

문자열을 가르기 전에 필드를 다른 순서로 정렬하려면, Sort 명령어를 사용하십시오.

부문자열을 메모리에 영원히 저장할 필요가 없다면, 파싱 회돌이의 사용을 고려해 보십시오 -- 특히 InputVar가 매우 방대하다면 꼭 고려해 보시기를 바랍니다. 그런 경우는 방대한 양의 메모리가 저장될 것입니다. 예를 들어:

Colors := "red,green,blue"
Loop, Parse, Colors, `,
    MsgBox Color number %A_Index% is %A_LoopField%.

StrSplit(), 파싱 회돌이, 배열, Sort, SplitPath, IfInString, StringGetPos, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace

예제

Separates a sentence into an array of words and reports the fourth word.

TestString := "This is a test."
StringSplit, word_array, TestString, %A_Space%, .  ; 점은 제외합니다.
MsgBox, The 4th word is %word_array4%.

Separates a comma-separated list of colors into an array of substrings and traverses them, one by one.

Colors := "red,green,blue"
StringSplit, ColorArray, Colors, `,
Loop, %ColorArray0%
{
    this_color := ColorArray%A_Index%
    MsgBox, Color number %A_Index% is %this_color%.
}