• 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

Object Storage Arubacloud
+1 głos
2,097 wizyt
pytanie zadane 26 lipca 2017 w JavaScript 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 ScriptyChris Mędrzec (190,190 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

+1 głos
odpowiedź 26 lipca 2017 przez Noragiri Obywatel (1,040 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
+1 głos
odpowiedź 26 lipca 2017 przez Tomek Sochacki Ekspert (227,510 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 Ekspert (227,510 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ź 399 wizyt
pytanie zadane 17 listopada 2018 w Assembler przez DeBos123 Nałogowiec (44,950 p.)
0 głosów
2 odpowiedzi 118 wizyt
pytanie zadane 10 listopada 2022 w HTML i CSS przez zbiku25 Bywalec (2,940 p.)
0 głosów
1 odpowiedź 547 wizyt

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...