2012-04-18 62 views

回答

2

您可以使用lastIndexOf函數來確定要替換的字符串的位置,然後在發生之前和之後添加子字符串以獲得所需的結果。

+0

好了,這就是我: '私有函數replaceLastOccurrence($ STR:字符串,$發現:字符串,$替換:字符串):字符串 {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 2012-04-18 14:32:25

+0

是的。但由於沒有「replaceLast」,我認爲你必須忍受一個不太優雅的解決方案。另外,如果你使這個輔助函數是公開的和/或靜態的,如果你使用它,你永遠不會再看到它的代碼;) – TheSHEEEP 2012-04-18 14:36:15

+0

在建議的函數中有一個錯誤...這裏是更正的函數: 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; } – 2012-11-08 17:25:43

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

我會首先檢查是否有一個次數都:

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; 
    } 
} 

否則會如果沒有發生,弄亂了字符串的結尾。

相關問題