• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Znalezienie najdłuższego stringa JS

+1 głos
564 wizyt
pytanie zadane 26 lipca 2017 w JavaScript, jQuery, AJAX przez modest Nowicjusz (210 p.)

Jak ogarnąć takie zadanie?

Napisz funkcję longestWord(stringToCheck), która ma zwracać długość najdłuższego słowa znajdującego się w podanym napisie.

  • Jeżeli napis składa się tylko z jednego słowa, to funkcja ma zwrócić jego długość.
  • Jeżeli funkcji zostanie przekazany inny typ danych niż napis – powinna zwrócić wartość wartość logiczną false false.
1
komentarz 26 lipca 2017 przez JSHolic Szeryf (80,520 p.)

Pomyśl i spróbuj wykonać to sam, bo wygląda na to że szukasz gotowca - a na forum jest zakaz proszenia o takie Chyba że zlecisz komuś wykonanie takiej aplikacji odpłatnie - wtedy zmień kategorie pytania.

Napis możesz podzielić na tablicę elementów typu string i wtedy sprawdzać (np. w pętli), czy to wyraz, czy może litera (najprościej po długości znaków, albo wyrażeniem regularnym i metodą RegExp.test()). Typ danych sprawdzisz operatorem typeof

2 odpowiedzi

+2 głosów
odpowiedź 26 lipca 2017 przez Noragiri Obywatel (1,060 p.)
edycja 26 lipca 2017 przez Noragiri
http://www.poradnik-webmastera.com/kursy/javascript/stringi.php

Wystarczą podstawowe operacje na stringach oraz wyszukanie najwyższej wartości w tabeli.

Edit : 1. Funkcja dzieli wprowadzony argument na tabele przy użyciu split.

2. Tworzysz zmienna która będzie przechowywać najdłuższy napis.

3.Wyszukujesz najdłuższy wyraz w tabeli.

4.Dodaj zabezpieczenia tzn. pojedyncze słowo oraz zły typ wprowadzonych danych
+2 głosów
odpowiedź 26 lipca 2017 przez Tomek Sochacki Mędrzec (188,580 p.)
edycja 26 lipca 2017 przez Tomek Sochacki

Z metodą split to bym uważał. Osobiście zrobiłbym to po prostu metodą String.prototype.match, np.:

const str = 'To jest napis.';
str.match( /[a-z]+/gi ); //["To", "jest", "napis"]

const str2 = 'Ale fajny napis... hurra!';
str2.match( /[a-z]+/gi ); //["Ale", "fajny", "napis", "hurra"]

W metodzie split trzeba by zrobić nieco bardziej zagmatwane wyrażenie regularne, gdyż tak proste dopasuje no do końca to co chcemy:

const str3 = '...to jest, napis...!';
str3.split( /([a-z]+)/gi ); //["...", "to", " ", "jest", ", ", "napis", "...!"]

 

Chodzi mi o to, że przecież tekst (napis) składa się nie tylko z literek, ale i ze znaków interpunkcyjnych i specjalnych, liczb itp. Zakładam więc, że chcemy je wyciąć i interesują nas tylko i wyłącznie litery.

Co do znalezienia w takiej tablicy najdłuższego słowa to jest kilka opcji, np. przesortowanie tablicy wg malejącej długości ciągów i odczytanie array[0] + oczywiście dodanie sprawdzenia dla podanych warunków brzegowych.

Zgodnie z tym co napisał Krzycho92 nie podam Ci pełnego gotowca (bo widzę, że chyba jakieś nowe zasady weszły w tym zakresie), ale myślę, że dostałeś tyle informacji, że na pewno to rozkminisz :)

komentarz 26 lipca 2017 przez Tomek Sochacki Mędrzec (188,580 p.)

Jeszcze taka mała uwaga odnośnie metody match - jeśli nie znajdzie ona żadnego dopasowania to nie zwraca pustej tablicy lecz wartość null. Drobny szczegół, ale istotny, jeśli będziesz potem operował na tablicy uzyskanej z match.

Rozwiązaniem jest np.:

let arr = str.match( /regexp/ ) || [];

W tym wypadku dla wartości null zostanie wykonana konwersja do FALSE, co skutkuje zwróceniem argumentu z alternatywy OR, czyli pustej tablicy (pusta tablica to w JS zawsze TRUE, ale to tak na marginesie :)

Podobne pytania

0 głosów
1 odpowiedź 98 wizyt
pytanie zadane 17 listopada 2018 w Assembler przez DeBos123 Nałogowiec (35,670 p.)
0 głosów
1 odpowiedź 48 wizyt
0 głosów
4 odpowiedzi 495 wizyt
pytanie zadane 17 listopada 2016 w HTML i CSS przez Falwack Początkujący (270 p.)
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

66,379 zapytań

113,130 odpowiedzi

239,488 komentarzy

46,637 pasjonatów

Przeglądających: 299
Pasjonatów: 5 Gości: 294

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...