XScript マニュアル · Chapter 30
STR — 文字列関数
STR は文字列のパース・変換・検索ユーティリティをまとめたグローバルオブジェクトです。
プロトコルフレームのパース、注文番号の分離、レシピ文字列の処理で最も頻繁に呼び出されます。
基本例
xscript
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);実践例 — レシピのパース
xscript
// 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の第 2 引数にデフォルト値を渡せば、例外なく安全に変換できます。$"..."補間文字列があり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="=") | 2 文字列 |
STR.ParsePairIntegers(text, ref i1, ref i2, delim="=") | 2 整数 |
STR.ParsePairDoubles(text, ref d1, ref d2, delim="=") | 2 実数 |
STR.ParsePairIntDouble(text, ref i, ref d, delim="=") | int + double |
STR.ParsePairStringInteger(text, ref s, ref i, delim="=") | string + int |
STR.ParsePairStringDouble(text, ref s, ref d, delim="=") | string + double |
分割 / 結合
| 関数 | 意味 |
|---|---|
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) | string 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) | 指定位置の文字を置換 |
エンコード / エスケープ
| 関数 | 意味 |
|---|---|
STR.EncodeMultiLine(data) / STR.DecodeMultiLine(data) | 複数行 ↔ 1 行エンコード |
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) | 数値/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) | ファイル全体 → 1 文字列 |
STR.SaveAllLines(path, lines) | array → ファイル保存 |