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>", | 
| 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>", | 
| 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>", | 
| 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 |