뚜둔뚜둔✩

판다의 개발일지

기타/SCRIPT

[PRACTICE] STRing Functions

2022. 6. 19. 03:44

PRACTICE script에서 문자열(string)을 변형하고 조작하는 기능을 사용할 수 있다.

    문자열에 대한 정보

    STRing.CHAR

    Extract a character

    syntax STRing.CHAR("<string>",<index>)
    return type Hex

    "<string>" 내에서 <index> 위치의 character 하나를 반환한다.

    만약 <index>"<string>"의 길이를 넘어간다면 0xFFFFFFFFFFFFFFFF(=-1)를 반환한다.

    PRINT STRing.CHAR("abcdef",2.)      // 0x63 (=> 'c')

    STRing.LENgth

    Length of string

    syntax STRing.LENgth("<string>")
    return type Decimal

    "<string>"의 문자열 길이를 반환한다.

    PRINT STRing.LENgth("abcdef")       // 6

     

    문자열 변형

    STRing.CUT

    Cut string from left or right

    syntax STRing.CUT("<string>",<length>)
    return type String

    "<string>"의 앞/뒤를 <length> 길이만큼 자른다. <length>가 양수일 경우 앞을 자르고, 음수일 경우 뒤를 자른다.

    PRINT STRing.CUT("abcdef",2.)       // "cdef"
    PRINT STRing.CUT("abcdef",-2.)      // "abcd"

    STRing.MID

    Extract part of string

    syntax STRing.MID("<string>",<start_at>,<length>)
    return type String

    "<string>"을 <start_at> 위치부터 <length> 길이만큼 자른다.

    PRINT STRing.MID("abcdef",2.,2.)    // "cd"
    PRINT STRing.MID("abcdef",6.,6.)    // ""

    STRing.LoWeR

    String to lowercase

    syntax STRing.LoWeR("<string>")
    return type String

    "<string>"을 소문자로 모두 변형한 문자열을 반환한다.

    PRINT STRing.LoWeR("AbCdEf")        // "abcdef"

    STRing.UPpeR

    String to uppercase

    syntax STRing.UPpeR("<string>")
    return type String

    "<string>"을 대문자로 모두 변형한 문자열을 반환한다.

    PRINT STRing.UPpeR("AbCdEf")        // "ABCDEF"

    STRing.TRIM

    String without leading and trailing whitespaces

    syntax STRing.TRIM("<string>")
    return type String

    "<string>" 앞뒤의 모든 공백을 제거한 문자열을 반환한다.

    PRINT STRing.TRIM(" abcdef   ")     // "abcdef"

    STRing.Replace

    Modified string after search operation

    syntax STRing.Replace("<source_string>","<search_string>",
    "<replace_string>",<no_replaces>
    )
    return type String

    "<source_string>" 내 등장하는 "<search_string>""<replace_string>"로 대체한다. <no_replaces>는 대체하는 횟수를 지정한다.

    • 0일 때에는 모든 "<search_string>"을 대체한다.
    • 양수일 때에는 "<search_string>""<source_string>"앞에서부터 등장하는 순서대로 <no_replaces> 횟수만큼 대체한다.
    • 음수일 때에는 반대로 뒤에서부터 등장하는 순서대로 대체한다.
    PRINT STRing.Replace("abcd_abcd_abcd_abcd","ab","12",0.)
                       // 12cd_12cd_12cd_12cd
    PRINT STRing.Replace("abcd_abcd_abcd_abcd","ab","",2.)
                       // cd_cd_abcd_abcd
    PRINT STRing.Replace("abcd_abcd_abcd_abcd","acb","abc",0.)
                       // abcd_abcd_abcd_abcd
    PRINT STRing.Replace("abcd_abcd_abcd_abcd","cd","34",-2.)
                       // abcd_abcd_ab34_ab34

     

    문자열와의 비교

    STRing.ComPare

    Check if string matches pattern

    syntax STRing.ComPare("<string>","<pattern>")
    return type Boolean

    "<string>"이 "<pattern>"에 부합하는지 여부를 반환한다. 이때 "<pattern>"은 '*'와 '?' string wildcard를 포함할 수 있는 string이다.

    • '*'은 0개 이상의 character,
    • '?'은 어떤 1개의 character를 의미한다.
    PRINT STRing.ComPare("one two three", "*two*")   // TRUE

    STRing.COUNT

    Substring occurrences

    syntax STRing.COUNT("<string>","<substring>")
    return type Decimal

    "<string>" 내에서 "<substring>"이 확인되는 횟수를 반환한다.

    PRINT STRing.COUNT("hello world", "l")      // 3
    PRINT STRing.COUNT("hello world", "ll")     // 1

    STRing.FIND

    Check if search characters are found within string

    syntax STRing.FIND("<string1>","<string2>")
    return type Boolean

    "<string1>""<string2>" 간 공유되는 문자가 존재하는지 여부를 반환한다.

    PRINT STRing.FIND("abcdef","alphabet")      // TRUE
    PRINT STRing.FIND("abcdef","xyz")           // FALSE

    예를 들어, STRing.FIND는 어떤 파일 이름에 포함되지 않아야 할 문자가 포함되는지 파악하는데 유용하게 쓰인다.

    ENTRY &filename
    &blackList="\/:*?""<>| -"

    IF STRing.FIND("&filename","&blacklist")==TRUE()
    (
        PRINT "filename contains illegal characters"
    )

    STRing.SCAN

    Offset of the found string

    syntax STRing.SCAN("<source_string>","<search_string>",
    <start_at>
    )
    return type Hex

    "<source_string>"의 <start_at> 위치부터 "<search_string>"이 처음으로 등장하는 위치를 반환한다. 만약 "<search_string>"이 등장하지 않는다면 -1이 반환된다.

    PRINT STRing.SCAN("abcdefabcdef","def",6.)   // 9
    PRINT STRing.SCAN("abcdefabcdef","edf",0.)   // -1

    STRing.SCANBack

    Offset of the found string

    syntax STRing.SCANBack("<source_string>","<search_string>",
    <start_at>
    )
    return type Hex

    STRing.SCAN의 반대 방향으로 scan을 진행한다. 즉, <start_at> 위치부터 왼쪽의 방향으로 "<search_string">이 처음 등장하는 위치를 반환한다.

    PRINT STRing.SCANBack("aaaaa","aaa",4.)                         // 2
    PRINT STRing.SCANBack("aaaaa","aaa",3.)                         // 1
    PRINT STRing.SCANBack("aaaaa","aaa",1.)                         // -1
    PRINT STRing.SCANBack("aaaaa","aaa",STRing.LENgth("aaaaa")-1)   // 2

    STRing.SPLIT

    Return element from string list

    syntax STRing.SPLIT("<string>","<separator>",<index>)
    return type String

    "<string>"을 "<separator>" 기준으로 분리했을 때, <index>번 째의 element를 반환한다. 만약 <index> 값이 음수라면 뒤에서부터의 순서를 의미한다.

    단, 0일 때는 왼쪽→오른쪽 방향의 첫 번째 element를 의미하지만 -1일 때는 왼쪽←오른쪽 방향의 첫 번째 element를 의미한다.

    PRINT STRing.SPLIT("C:\T32\demo\arm","\",2.)        // "demo"
    PRINT STRing.SPLIT("C:\T32\demo\arm","\",-1.)       // "arm"
    PRINT STRing.SPLIT("C:\T32\demo\arm","demo",0.)     // "C:\T32\"

     

     

    '기타 > SCRIPT' 카테고리의 다른 글

    [PRACTICE] 흐름 제어 (Flow Control)  (0) 2022.05.09
    [PRACTICE] 변수 사용  (0) 2022.05.07
    [PRACTICE] Basics  (0) 2022.05.06
    [PRACTICE] 조건문과 반복문  (0) 2022.05.06
    VSCode에서 cmm script 작성하기  (0) 2022.05.04