Hello,
Abgesehen läufst Du ohne parseInt auch bei positiven Werten für occur Gefahr, dass es Fehler gibt, z.B. ergibt 3 + "1" nicht 4, sondern "31".
Kann man bei JavaScript die Datentypen für die Signatur festlegen, oder ist das genauso bescheuert variant, wie bei PHP?
Meine Version von replace_nth sieht so aus (ohne Parameterprüfungen):
function replace_nth(input, search, replace, occur) { var items = input.split(search); if (occur == 0) // occur=0 bedeutet replace all return items.join(replace); if (occur < 0) // negatives occur auf positive Sicht umrechnen occur = items.length + occur; occur--; // occur auf 0-basiert umrechnen var lastItem = items.pop(); var result = ''; for(n = 0; n < items.length; n++) { result += items[n] + (n == occur ? replace : search); } return result + lastItem; }
Hast Du ausprobiert, ob das auch mit führenden oder abschließenden "search" funktioniert? Nach meinem Verständnis müsste der Output-String unerlaubt verkürzt werden.
Ich würde mich nun freuen, wenn die Verfechter von indexOf() & Co. auch mal ihre Version vorstellen könnten ;-P
Liebe Grüße
Tom S.
--
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.