관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

StringGetPos 문자열중의 특정의 문자열의 위치를 검색한다 본문

AUTOHOTKEY/레퍼런스

StringGetPos 문자열중의 특정의 문자열의 위치를 검색한다

님투 2007. 11. 5. 23:25
반응형

StringGetPos

문자열중의 특정의 문자열의 위치를 검색한다

StringGetPos, OutputVar, InputVar, SearchText [, L#|R# , Offset] 

Parameters


인수명 설명
OutputVar 검색된 위치를 격납하는 변수명.
문자열의 처음은 「0」로서 센다.
발견되지 않았던 경우는, 「-1」(이)가 된다.
InputVar 문자를 검색하는 대상의 문자열이 격납된 변수명.
SearchText 검색하는 문자열.
StringCaseSense그리고 설정하지 않는 한, 대문자 소문자의 차이는 무시된다.
L#|R# SearchText에 매치하는 부분이 다수 있는 경우, 몇번째의 출현 위치를 취득하는지를 지정할 수 있다.
생략시는, 제일 최초의 출현 위치를 취득한다.
「1」(이)나 「R」(을)를 지정하면, 제일 마지막 출현 위치를 취득할 수 있다.
「L2」(와)과 같이 「L」에 이어 숫자를 지정하면, 최초부터 지정 번째의 출현 위치를 취득할 수 있다.
「R3」(와)과 같이 「R」에 이어 숫자를 지정하면, 최후로부터 지정 번째의 출현 위치를 취득할 수 있다.
SearhText의 출현수가L(이)나R에 이어 지정한 수보다 적었던 경우, 발견되지 않았다 보여OutputVar(은)는 「-1」(이)가 된다.
Offset 검색시, 최초의Offset문자분만큼 무시해 검색을 시작한다.
생략시는 「0」.
L#|R#그리고 최후로부터 검색하는 지정이 되어 있는 경우, 마지막Offset문자분을 날려 검색을 시작한다.

ErrorLevel

SearchText하지만 발견되지 않았던 경우는 「1」, 발견되었을 경우는 「0」


Remarks

StringMid(와)과 달라, 문자열의 처음은 「0」문자눈으로서 처리된다.

L#|R#(이)나Offset옵션으로의 지정에 관계없이, 반드시InputVar의 선두로부터의 위치가 취득된다.

파일의 패스를 분해하고 싶은 경우, SplitPath(을)를 사용하는 편이 편리.

SearchText(이)나ReplaceText에 반각 스페이스나Tab문자를 지정하고 싶은 경우, 편입 변수 %A_Space%(이)나 %A_Tab%(을)를 사용한다.


Related

IfInString, StringCaseSense, SplitPath, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringReplace, if var is type


Examples

Haystack = abcdefghijklmnopqrs
Needle = def
StringGetPos, pos, Haystack, %Needle%
if pos >= 0
	MsgBox, The string was found at position %pos%.
; Example #2:
; Divides up the full path name of a file into components.
; Note that it would be much easier to use  StringSplit or a
;  parsing loop to do this, so the below is just for illustration.
FileSelectFile, file, , , Pick a filename in a deeply nested folder:
if file <>
{
	StringLen, pos_prev, file
	pos_prev += 1 ; Adjust to be the position after the last char.
	Loop
	{
		; Search from the right for the Nth occurrence:
		StringGetPos, pos, file, \, R%A_Index%
		if ErrorLevel <> 0
			break
		length := pos_prev - pos - 1
		pos_prev := pos
		pos += 2  ; Adjust for use with StringMid.
		StringMid, path_component, file, %pos%, %length%
		MsgBox Path component #%a_index% (from the right) is:`n%path_component%
	}
}
반응형
Comments