뚜둔뚜둔✩

판다의 개발일지

기타/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