StringReplace

지정된 부문자열을 새 문자열로 교체합니다.

OutputVar := StrReplace(Haystack, SearchText [, ReplaceText, OutputVarCount, Limit := -1])  ; v1.1.21+
StringReplace, OutputVar, InputVar, SearchText [, ReplaceText, ReplaceAll?]

매개변수

OutputVar

교체의 결과를 저장할 변수의 이름.

InputVar 또는 Haystack

그의 내용을 읽을 변수의 이름. 이름을 퍼센트 사인으로 둘러 싸지 마십시오. 단, 변수의 내용이 이름이기를 원하는 경우는 예외입니다.

StrReplace()는 함수이므로, Haystack은 표현식이 가능합니다.

SearchText

검색에 사용될 문자열. 부합은 대소문자를 구분하지 않습니다. 단, StringCaseSense가 켜져 있는 경우는 예외입니다.

ReplaceText

SearchText는 이 텍스트로 교체됩니다. 생략되거나 비어 있으면, SearchText는 빈 문자열로 교체됩니다. 다른 말로, OutputVar로부터 제외됩니다.

OutputVarCount (StrReplace)

교체가 일어난 횟수를 저장할 변수의 이름. 인용부호 처리 안함 (없으면 0).

Limit (StrReplace)

Limit을 생략하면, 기본값은 -1입니다. 기본으로 Haystack 발견된 모든 패턴을 교체합니다. 그렇지 않으면, 교체를 허용할 최대 횟수를 지정하십시오. Haystack에서 마지막 매개변수의 오른쪽 부분은 교체되지 않고 그대로입니다.

ReplaceAll? (StringReplace)

생략하면, 오직 SearchText의 첫 번째 부합만 교체됩니다. 그러나 이 매개변수가 1이나 A 또는 All이면, 모든 부합이 교체됩니다.

단어 UseErrorLevel을 지정하면 ErrorLevel에 교체된 횟수를 저장할 수 있습니다 (없으면 0). UseErrorLevel은 묵시적으로 "All".

ErrorLevel

StrReplace: ErrorLevel은 설정되지 않습니다.

StringReplace: 마지막 매개변수가 UseErrorLevel이면, ErrorLevel에는 교체된 횟수가 설정됩니다 (없으면 0). 그렇지 않으면, ErrorLevel은 SearchText를 InputVar 안에서 발견하지 못한 경우 1이 설정되고 발견한 경우는 0이 설정됩니다.

논평

이 명령어 그리고 기타 모든 명령어에 대하여, OutputVar는 InputVar와 변수가 같아도 허용됩니다.

내장 변수 %A_Space%와 %A_Tab%에 각각 스페이스 하나와 탭 문자 하나가 들어 있습니다. SearchText의 앞이나 뒤에서 스페이스와 탭만 홀로 검색할 때 유용합니다.

v1.0.45에서, AllSlow 옵션은 수행성능 향상과 효율적인 메모리 이용을 위해 폐기 되었습니다. 여전히 지정할 수는 있지만, 아무 효과가 없을 것입니다.

관련 항목

RegExReplace(), IfInString, StringCaseSense, StringLeft, StringRight, StringMid, StringTrimLeft, StringTrimRight, StringLen, StringLower, StringUpper, StringGetPos, if var is type

예제

; 클립보드의 내용에서 모든 CR+LF를 제거합니다:
StringReplace, clipboard, clipboard, `r`n, , All

; 모든 스페이스를 플러스로 교체합니다:
StringReplace, NewStr, OldStr, %A_SPACE%, +, All

; 변수 안의 텍스트로부터 모든 빈 줄을 제거합니다:
Loop
{
    StringReplace, MyString, MyString, `r`n`r`n, `r`n, UseErrorLevel
    if ErrorLevel = 0  ; 더 이상 교체가 필요하지 않습니다.
        break
}