String.replaceは文字列内の最初の文字列を置き換えますが、文字列の最後の文字列を置換したいと思います。それを行う簡単な方法はありますか?AS3の最後の文字列を置換する最も効率的な方法
2
A
答えて
2
lastIndexOf関数を使用して、置換する文字列の場所を特定し、出現前後の部分文字列を追加して目的の結果を得ることができます。
1
示唆された機能にエラーがここに...ありますが修正いずれかです。
public static function replaceLastOccurrence(str:String, find:String, replace:String):String {
var pre:String = str.substr(0, str.lastIndexOf(find));
var post:String = str.substr(str.lastIndexOf(find)+find.length, str.length);
return pre + replace + post;
}
0
ですべてのoccuranceがある場合は、私が最初に確認します:
public static function replaceLastOccurrence(str:String, find:String, replace:String):String
{
if (str.lastIndexOf(find) != -1)
{
var pre:String = str.substr(0, str.lastIndexOf(find));
var post:String = str.substr(str.lastIndexOf(find) + find.length, str.length);
return pre + replace + post;
}
else
{
return str;
}
}
それ以外の場合でしょう出現がない場合には、文字列の終わりを混乱させる。
まあ、これは私が持っているものです。 'プライベート関数replaceLastOccurrence($ strの:文字列、$の検索:文字列は、$置き換える:String)を:文字列 { するvar前:文字列= $ str.substr(0、$ str.lastIndexOf($ find)-1)、 post:String = $ str.substr($ str.lastIndexOf($ find)+2、$ str.length); \t \t \t return pre + $ replace + post; } ' それはちょうど非常にエレガントに見えません。 – DeweyOx
真。しかし、 "replaceLast"がないので、あなたはあまりにもエレガントなソリューションで生きなければならないと思います。また、そのヘルパー関数をpublicおよび/またはstaticにすると、そのコードを再度使用するとコードは表示されません; – TheSHEEEP
提案された関数にエラーがあります...修正された関数があります: public static function replaceLastOccurrence(str:String、find:String、replace:String):String { var pre:String = str.substr(0、str.lastIndexOf(find)-1); var post:String = str.substr(str.lastIndexOf(find)+ find.length、str.length); return pre + replace + post; } –