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)파일 → 줄 배열

  • 외부 프로토콜 파싱은 ParseCommaStringParsePairIntDouble / 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 → 파일 저장