VEXでの文字列操作

文字が含まれているかチェック find()

string name = "abcdefghijk";

int flag = find(name, "cdef");

printf(sprintf('%g', flag) + '\n');
// 2

find関数で文字列に特定の文字が含まれているかチェックしている。なければマイナスの値が返る。

文字を入れ替える re_replace()

string name = "abc_def";
name = re_replace("abc_", "", name);

printf(sprintf('%g', name) + '\n');
// def

re_replace関数を使い、abc_という文字列を空白と入れ替えて消去している。

正規表現を使って入れ替える

string name = "abc(defghi)jk";
name = re_replace(r"\(.*\)", "", name);

printf(sprintf('%g', name) + '\n');
// abcjk

(abcd)のような括弧に囲まれた文字列をそのまま消している。「(」はメタ文字なので 「 \ 」 を前につける。なんでもいい連続した文字は 「 .* 」 になる。

文字を分割する split()

string path = "abc/def/ghi";
string char[] = split(path, "/");

printf(sprintf('%g', char) + '\n');
// {abc, def, ghi}

Split()関数を使いスラッシュで分割する。

インデックス指定で文字を抽出する slice()

コードは最初と最後の文字を削る例。

string str = "abcdefg";
str = slice(str, 1, len(str)-1);
printf(sprintf('%g', str) + '\n');
// bcdef

数字の桁をそろえる rint()

int digit = 2;
float coef = pow(10, digit);
float value = rint(3.14159 * coef) / coef;
s@value = sprintf("%d", value);

3.14159は3.14の小数点第二位に丸められる。

タイトルとURLをコピーしました