TS: replace_nth() auch mit negativer Positionsangabe

Beitrag lesen

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.