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
- String.prototype.replace() - JavaScript | MDN
- String.prototype.replaceAll() - JavaScript | MDN
- Regular expressions - JavaScript | MDN
❤️ Podobają Ci się bugi JS?
Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js