pomoc z zadniem js

0

Siemka, mam do zrobienia niby proste zadanie, ale nie mogę wpaść na pomysł jak to zrobić.
Nie chce gotowca tylko, żeby ktoś mnie naprowadził (czego użyć)

Za pomocą prompta muszę wpisać tekst z liczbami, np. "Ala 32 ma 04 kota 12"
pobrać ten tekst, a następnie ma mi wypisać Ala ma kota (bez liczb) oraz 32 04 12 (bez słów)

Dzięki za pomoc

0

Do jakiejś zmiennej zapisujesz wynik działania metody prompt z podanymi argumentami przez usera z klawiatury. Możesz użyć pętli for do wyodrębnienia każdego elementu. Sprawdź czy pojedynczy wyodrębniony element jest liczbą czy stringiem opierając się o typy zmiennych - musisz skorzystać tutaj z instrukcji typeof. (https://developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Operatory/Operator_typeof)

Nie chcesz gotowca więc mam nadzieję, że sam już napiszesz to zadanie. Swoją drogą, całkiem oryginalny nick. ;)

1

Za pomocą prompta muszę wpisać tekst z liczbami, np. "Ala 32 ma 04 kota 12"

możesz liczby sobie wyłuskać za pomocą wyrażeń regularnych: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions

1

Jeśli cyfry nie są wymieszane z wyrazami to:

  1. Rozbij string w miejscach spacji (String.prototype.split)
  2. Przeiteruj po powstałej tablicy i bodziel ją na dwie w zależności co jest w środku (isNaN())
  3. Obie tablice połącz z użyciem spacji (Array.prototype.join)
1

Rozbij string w miejscach spacji (String.prototype.split)
Przeiteruj po powstałej tablicy i bodziel ją na dwie w zależności co jest w środku (isNaN())

Trzeba jeszcze pomyśleć o przypadku, co jeśli ktoś wrzuci więcej niż jedną spację (samo split(' ') da po prostu puste stringi w tym miejscu (a isNaN('') === false. (swoją drogą samo isNaN też nie wiem, do czego jest to isNaN, ja sprawdzam zwykle parseInt, bo tego isNaN nie umiem obsługiwać po prostu. Zresztą podobno to pomyłka była ta funkcja i już nową dodali, która jest do czego innego, bo do sprawdzania czy coś jest NaN)

'abc    123'.split(' ').map(item=>isNaN(item))

====> rowna sie
[ true, false, false, false, false ]

więc trzeba by potem albo filtrować po tym, czy coś nie jest pustym stringiem. Albo po prostu dać wyrażenie regularne do splita:

'abc    123'.split(/ +/)
====> rowna sie
[ 'abc', '123' ]

czy po prostu zrobić match:

'abc 123 oio811'.match(/\d+/g)
===> rowna sie
[ '123', '811' ]

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