XScript 매뉴얼 · Chapter 30
STR — 문자열 함수
STR 은 문자열 파싱·변환·검색 유틸리티를 모아둔 글로벌 객체입니다. 프로토콜
프레임 파싱, 주문 번호 분리, 레시피 문자열 처리에서 가장 자주 호출됩니다.
기본 예제
string data = " abc d ";
Log("[{0}] => Trim = [{1}]", data, STR.Trim(data));
data = "12";
int dataToInt = STR.ParseToInt(data);
Log("[{0}] => ParseToInt = [{1}]", data, dataToInt);
data = "12.3";
dataToInt = STR.ParseToInt(data, 0);
Log("[{0}] => ParseToInt = [{1}]", data, dataToInt);
data = "abc:123";
string name;
string value;
STR.ParseNameValue(data, name, value, ":");
Log("[{0}] => ParseNameValue = [{1},{2}]", data, name, value);
int pos = STR.IndexOf(data, ":");
string tail = STR.Substring(data, pos + 1);실전 예제 — 레시피 파싱
// recipe = "1:50,3:20.3,7:60.1"
array items = STR.ParseCommaString(recipe);
if (items.Count == 0)
{
return -1;
}
int unitNo;
double target;
for (i, 0, items.Count - 1)
{
if (STR.ParsePairIntDouble(items[i], unitNo, target, ":") == false)
{
return -1;
}
if (unitNo == targetUnit)
{
return target;
}
}주요 메서드
기본
| 시그니처 | 설명 |
|---|---|
int Length(string text) | 길이 |
string Trim(string text) | 양끝 공백 제거 |
string ToUpper(string text) / string ToLower(string text) | 대·소문자 |
string Replace(string text, string oldValue, string newValue) | 치환 |
bool IsNullOrWhiteSpace(string text) | 빈/공백 여부 |
bool Contains(string text, string value) | 포함 |
bool StartsWith(string text, string value) / EndsWith | 접두/접미 |
검색 · 추출
| 시그니처 | 설명 |
|---|---|
int IndexOf(string text, string value) | 첫 위치 |
int IndexOf(string text, string value, int startIndex) | 시작 위치 지정 |
int NthIndexOf(string text, string value, int n) | N번째 위치 |
string Substring(string text, int startIndex) | 끝까지 자르기 |
string Substring(string text, int startIndex, int length) | 길이 지정 |
파싱
| 시그니처 | 설명 |
|---|---|
array ParseCommaString(string commaString) | CSV 분리 |
array ParseSplitString(string text, string splitString) | 임의 구분자 분리 |
bool ParseNameValue(string text, ref string name, ref string value, string delim) | name/value 쌍 분리 |
bool ParsePairIntDouble(string text, ref int first, ref double second, string delim) | key:value 정수·실수 |
bool ParsePairStrings(string text, ref string first, ref string second) | 문자열 쌍 |
int ParseToInt(string text) / ParseToInt(string text, int defaultValue) | 정수 변환 |
double ParseToDouble(string text) / ParseToDouble(string text, double defaultValue) | 실수 변환 |
파일
| 시그니처 | 설명 |
|---|---|
array ReadAllLines(string path, bool addLog = true) | 파일 → 줄 배열 |
팁
- 외부 프로토콜 파싱은
ParseCommaString후ParsePairIntDouble/ParsePairStrings로 세분화하는 2단 분리 패턴이 안정적. ParseToInt두번째 인자로 기본값을 주면 예외 없이 안전하게 변환.$"..."보간 문자열이 있어FormatString보다 가독성이 좋지만, 복잡한 로케일·포맷은SYS.GetDateTimeStringFormat같은 헬퍼 사용.
STR 전체 함수 레퍼런스 (XUtilString)
C# 소스 기준 — 스크립트에서 직접 호출 가능한 모든 함수.
파싱 (Name=Value · Pair)
| 함수 | 의미 |
|---|---|
STR.GetName(text, delim='=') | name=value 에서 name 만 |
STR.GetValue(text, delim='=') | name=value 에서 value 만 |
STR.ParseNameValue(text, ref name, ref value, delim="=") | 한 번에 분리 |
STR.ParsePairStrings(text, ref s1, ref s2, delim="=") | 두 문자열 |
STR.ParsePairIntegers(text, ref i1, ref i2, delim="=") | 두 정수 |
STR.ParsePairDoubles(text, ref d1, ref d2, delim="=") | 두 실수 |
STR.ParsePairIntDouble(text, ref i, ref d, delim="=") | 정수+실수 |
STR.ParsePairStringInteger(text, ref s, ref i, delim="=") | 문자열+정수 |
STR.ParsePairStringDouble(text, ref s, ref d, delim="=") | 문자열+실수 |
분할 / 결합
| 함수 | 의미 |
|---|---|
STR.ParseCommaString(text) | , 로 분리 → array |
STR.ParseTabSplitString(text) | tab 분리 |
STR.ParseSplitString(text, char) / (text, string) | 임의 구분자 분리 |
STR.GetCommaText(list) | array → , 결합 |
STR.GetTapSplitText(list) | array → tab 결합 |
STR.GetSplitedText(list, char) / (list, string) | array → 임의 구분자 결합 |
STR.StringToDoubleList(list) | 문자열 array → double array |
검사 / 변환
| 함수 | 의미 |
|---|---|
STR.HaveSpace(text) | 공백 포함 여부 |
STR.HaveKoreanChar(str) | 한글 포함 여부 |
STR.IsStringNubmer(text) | 숫자만으로 구성됐는지 |
STR.IsNullOrWhiteSpace(text) | 비어있거나 공백뿐인지 |
STR.GetEnumType(type, value) | 문자열 → enum |
STR.ConvertAvailableName(name) | 파일명/식별자로 안전한 이름으로 정제 |
STR.StringToHexString(str) | 문자열 → 16진 표현 |
조작 (불변 — 새 string 반환)
| 함수 | 의미 |
|---|---|
STR.Strip(text) / STR.StripBrace(text) | 양끝 공백 / 양끝 괄호 제거 |
STR.Trim / TrimStart / TrimEnd(text) | C# 표준과 동일 |
STR.ToLower(text) / STR.ToUpper(text) | 대소문자 변환 |
STR.PadLeft(text, totalWidth) / STR.PadRight(text, totalWidth) | 폭 맞춤 |
STR.Substring(text, start, len) / (text, start) | 부분 문자열 |
STR.Insert(text, startIndex, value) | 삽입 |
STR.Remove(text, startIndex) / (text, startIndex, count) | 부분 제거 |
STR.Replace(text, oldValue, newValue) | 전체 치환 |
STR.ReplaceString(text, start, length, toReplace) | 위치 기반 치환 |
STR.GetReverse(data, step) | step 단위 역순 (예: 16진 byte swap) |
검색 / 위치
| 함수 | 의미 |
|---|---|
STR.Length(text) | 길이 |
STR.Contains(text, value) | 포함 여부 |
STR.StartsWith(text, value) / EndsWith(text, value) | 접두/접미사 |
STR.IndexOf(text, value) / (text, value, start) / (text, value, start, count) | 첫 등장 위치 |
STR.NthIndexOf(text, value, n) | n 번째 등장 위치 |
STR.LastIndexOf(text, value) / (text, value, start) / (text, value, start, count) | 마지막 등장 |
코드 포인트
| 함수 | 의미 |
|---|---|
STR.GetCharCode(str, index=0) | 인덱스 위치의 charCode |
STR.SetCharCode(str, index, code) | 인덱스 위치 char 교체 |
인코딩 / 이스케이프
| 함수 | 의미 |
|---|---|
STR.EncodeMultiLine(data) / STR.DecodeMultiLine(data) | 다중행 ↔ 한 줄 인코딩 |
STR.EncodeBraceInFormat(format) | { } 이스케이프 (FormatString 안에서 표시용) |
STR.Escape(input) / STR.Unescape(input) | C 스타일 이스케이프 ↔ 원문 |
숫자 ↔ 문자열
| 함수 | 의미 |
|---|---|
STR.ParseToInt(text) / (text, defaultValue) | 문자열 → int |
STR.ParseToDouble(text) / (text, defaultValue) | 문자열 → double |
STR.ParseToStr(int) / (double) / (bool) | 숫자/불 → 문자열 |
STR.ParseStringNumber(text, ref prefix, ref number, base=10) | "M0017" → prefix="M", number=17 |
STR.FormatNumberWithComma(int) / (double) | 1,234,567 같은 천단위 콤마 |
STR.ParseCommaNumber(text, int) / (text, double) | 콤마 포함 문자열 → 숫자 |
파일 입출력 (텍스트 파일 헬퍼)
| 함수 | 의미 |
|---|---|
STR.ReadAllLines(path, addLog=true) | 파일 → 줄 array |
STR.ReadAllIntLines(path, addLog=true) | 파일 → int array |
STR.ReadFirstLine(path) | 첫 줄만 |
STR.ReadAllText(path, addLog=false) | 파일 전체 → 한 문자열 |
STR.SaveAllLines(path, lines) | array → 파일 저장 |