ある文字列のすべての出現箇所を別の文字列に置き換える関数を Lua で作成しようとしています。
function string.replace(s, oldValue, newValue)
return string.gsub(s, oldValue, newValue);
end;
必要なのは (Lua に既に文字列置換機能がない限り)、Lua正規表現パターン文字列をエスケープする関数です (Lua に Escape RegularExpression Pattern 関数が既にない場合)
私は適切なstring.replace
関数を書き始めようとしました:
local function EscapeRegularExpression(pattern)
-- "." ==> "%."
local s = string.gsub(pattern, "%." "%%%.");
return s;
end;
function string.replace(s, oldValue, newValue)
oldValue = EscapeRegularExpression(oldValue);
newValue = EscapeRegularExpression(newValue);
return string.gsub(s, oldValue, newValue);
end;
しかし、エスケープする必要があるすべての Lua正規表現パターン キーワードを簡単に思いつくことはできません。
ボーナスの例
修正が必要な別の例は次のとおりです。
//Remove any locale thousands separator:
s = string.gsub(s, Locale.Thousand, "");
//Replace any locale decimal marks with a period
s = string.gsub(s, Locale.Decimal, "%.");