본문 바로가기

AUTOHOTKEY/레퍼런스

Loop,PARSE 문자열을 지정의 단락 문자로 분할하고, 각각 대해 반복 처리

Loop,PARSE

문자열을 지정의 단락 문자로 분할하고, 각각 대해 반복 처리

Loop, Parse, InputVar [, Delimiters, OmitChars, FutureUse] 

Parameters


인수명 설명
Parse 제일 인수는 「PARSE」(으)로 한다.
변수는 사용할 수 없다.
InputVar 분할되는 문자열이 격납된 변수명.
「%Name%」(와)과 같이 하면, 「Name」변수에 격납된 문자열이 변수명으로서 사용된다.
Delimiters 단락 문자로서 사용하고 싶은 문자를 열거한다.
특정의 「문자열」을 단락으로 하고 싶은 경우, StringReplace그리고 치환하고 나서 처리하면 좋다.
「CSV」라고 하면,CSV형식의 데이터로서 처리된다.「"first field",SecondField,"the word ""special"" is quoted literally",,"last field, has literal comma"」(와)과 같은 데이터를 잘 처리할 수 있다.
생략시는,1아르바이트씩 처리된다.
OmitChars 각 필드의 선두와 말미로부터 없애고 싶은 문자를 열거.
FutureUse 장래의 확장을 위해서 확보되고 있다.현재 이 인수는 무시된다.

Remarks

「A_LoopField」변수로 잘라진 문자열을 참조할 수 있다.

InputVar의 내용은 루프 개시전에 퇴피되므로, 루프내에서InputVar의 변수의 내용을 변경해도 영향은 없다.

Sort커멘드를 사용하면, 필드를 문자 코드순서에 줄서 바꾸고 나서 처리할 수 있다.

StringSplit그렇지만 문자열을 분할할 수 있지만,Loop,PARSE쪽이 퍼포먼스가 높다.

그 외의 사양은, 통상의 Loop(와)과 같이.


Related

StringSplit , Loop, Break, Continue, Blocks, Sort, FileSetAttrib, FileSetTime


Example(s)

; Example #1:
Colors = red,green,blue
Loop, parse, Colors, `,
{
	MsgBox, Color number %a_index% is %A_LoopField%.
}

; Example #2: Read the lines inside a variable, one by one (similar to a  file-reading loop).
; A file can be loaded into a variable via  FileRead:
Loop, parse, FileContents, `n, `r
{
	MsgBox, 4, , Line number %a_index% is %A_LoopField%.`n`nContinue?
	IfMsgBox, No, break
}

; Example #3: This is the same as the example above except that it's for the clipboard.
; It's useful whenever the clipboard contains files, such as those copied from an open
; Explorer window (the program automatically converts such files to their file names):
Loop, parse, clipboard, `n, `r
{
	MsgBox, 4, , File number %a_index% is %A_LoopField%.`n`nContinue?
	IfMsgBox, No, break
}
; Example #4: Parse a comma separated value (CSV) file:
Loop, read, C:\Database Export.csv
{
	LineNumber = %A_Index%
	Loop, parse, A_LoopReadLine, CSV
	{
		MsgBox, 4, , Field %LineNumber%-%A_Index% is:`n%A_LoopField%`n`nContinue?
		IfMsgBox, NO, return
	}
}