Zamiana kropek na myślniki w stringu

0

Mam taki problem. Otóż to zadanie z code wars https://www.codewars.com/kata/596c6eb85b0f515834000049/train/javascript wymaga ode mnie abym w miejsce kropek wstawił myślniki. Oto mój kod który realizuje to zadanie

function replaceDots(str){
    let string = str.replaceAll('.', '-');
    return string;
}

bardzo krótki i prosty kod i nie mogę zrozumieć jednej rzeczy. Otóż gdy wstawiłem ten kod w przeglądarce to mi to działa natomiast w code wars gdy to zrobię to dostaje taką oto litanie
TypeError: str.replaceAll is not a function
at replaceDots
at /home/codewarrior/index.js23
at begin
at it
at /home/codewarrior/index.js3
at /runner/frameworks/javascript/cw-2.js11
at Promise._execute
at Promise._resolveFromExecutor
at new Promise
at describe
at /home/codewarrior/index.js5
at /home/codewarrior/index.js5
at Object.handleError
ktoś wie o co może z tym chodzić bo ja zachodze w głowe i nic

0

Jedną z przyczyn może być, że funkcja nie jest wywoływana z argumentem posiadającym dostęp do funkcji replaceAll. Czyli argument nie jest typu string. Na przykład zobacz w przeglądarce:

const num = 2.5;
num.replaceAll('.', '-');
0

No w tym przypadku akurat się zgodze. Tyle tylko że do funkcji w tym zadaniu jest przekazywany tylko string

0

Inną z przyczyn może być, że środowisko uruchomieniowe nie wie o takiej funkcji (nie wiem, jakie to środowisko). Na przykład według https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll Internet Explorer nie ma jej zaimplementowanej.


PS Może trzeba tylko replace użyć?


PS2 Według strony MDN pod powyższym linkiem replace posiada możliwość zamiany wszystkich wystąpień.

0

Napisałem taki kod

function replaceDots(str){
  let search = '.';
  let replaceWith = '-';  
  let newStr = str.replace(search, replaceWith);
  return newStr;
}

i oto co otrzymuje one-two.three

0

Ale nie zamieniasz wszystkich wystąpień, a jedynie pierwsze z nich.

0

Mógłbym tutaj użyć wyrażeń regularnych ale nie stosuje ich w ogóle

0

Czemu ich nie stosujesz?

0

To znaczy zamierzam, ale chce lepiej ogarnąć podstawy języka i w miare mżliwości ich nie stosować

0

Muszę w tym zadaniu zastąpić wszystkie kropki myślnikami musi być one-two-three a nie one-two.three

0

Więc jak to można jakoś inaczej ogarnąć?

0

Nie chciałbym Cię za bardzo przekonywać, jeśli rzeczywiście nie chcesz ich na razie stosować. Ja to zadanie rozwiązałem właśnie używając wyrażenia regularnego. Specjalnie nie piszę, jakiego, byś mógł sam pomyśleć. To jest bardzo proste, nawet w szablonie funkcji masz już wyrażenie regularne.


PS

1 użytkowników online, w tym zalogowanych: 0, gości: 1