Przejdź do głównej zawartości

Bug #035

🪲 Znajdź buga

let twister = `
Król Karol
kupił królowej Karolinie
korale koloru koralowego
`
twister = twister.replace(/karol/i, "Jan")

console.log(twister)

W ciągu znaków chcemy zamienić wystąpienia słowa karol (niezależnie od wielkości liter) na słowo Jan.

Czy Karol zostanie zamieniony na Jan, a Karolina na Janina?

🧪 Rozwiązanie

let twister = `
Król Karol
kupił królowej Karolinie
korale koloru koralowego
`
twister = twister.replace(/karol/gi, "Jan")

console.log(twister)

W przykładzie z błędem, zamienione zostanie tylko pierwsze wystąpienie

Król Jan
kupił królowej Karolinie
korale koloru koralowego

Jeśli w metodzie replace() jako pierwszego argumentu (szukanego fragmentu) użylibyśmy ciągu znaków, możliwa byłaby zamiana tylko i wyłącznie pierwszego wystąpienia.

Chcąc zamienić wszystkie wystąpienia należałoby wtedy użyć metody replaceAll().

Jednak przekazując w pierwszym argumencie replace() wyrażenie regularne (zdefiniowane wewnątrz dwóch ukośników /), możemy ustawić w nim również flagi, takiej jak niewrażliwości na wielkość liter (i), czy działanie globalne (g).

Z flagą globalną (g) w wyrażeniu regularnym, działanie replace() będzie miało efekt w całym ciągu znaków.

Król Jan
kupił królowej Janinie
korale koloru koralowego

🎢 Plac zabaw

Otwórz edytor w nowym oknie

📑 Linki

❤️ Podobają Ci się bugi JS?

Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js