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

question-closed Program sprawdzający wpisany napis

Object Storage Arubacloud
0 głosów
1,432 wizyt
pytanie zadane 14 czerwca 2018 w JavaScript przez MakaBresk Obywatel (1,060 p.)
zamknięte 18 czerwca 2018 przez MakaBresk

Dobry wieczór próbowałem rozwiązać zadanie od Pana Mirosława Zelenta z odcinka 5 dotyczącego egzaminu e.14. Proszę o jakąś podpowiedź w jaki sposób mogę sprawdzić podany napis czy na jego końcu znajduje się słowo kot?

Polecenie do zadania: Napisz skrypt, który sprawdzi, czy podany napis ma przynajmniej 6 znaków, a dodatkowo sprawdzi także, czy łańcuch zakończony jest wyrazem „kot”. Przykład 1: „warkot” –Wyraz ma co najmniej 6 znaków i kończy się napisem kot Przykład 2: „łaskotki” – Wyraz ma co najmniej 6 znaków, ale nie kończy się napisem kot Przykład 3: „kot” – Wyraz nie ma co najmniej 6 znaków, ale kończy się napisem kot
 

HTML i JS:

<!doctype html>
<html lang="pl">

<head>
	
	<meta charset="UTF-8">
	
		<title>Zadanie 5</title>
	
</head>

<body>

	<h1>Zadanie 5</h1>

	<label>Wprowadź napis:<input type="text" id="napis"></label>
	
	<br><br>
	
	<button onClick="sprawdz()">Sprawdź</button>
	
	<div id="wynik" style="margin-top: 20px;"></div>
	
	<script src="z5.js"></script>

</body>
</html>
function sprawdz()
{
	var napis = document.getElementById("napis").value;
	
	if (napis.length >= 6 && jest_kot(napis))
		document.getElementById("wynik").innerHTML = "Wyraz ma co najmniej 6 znaków .";
	
	else if (napis.length >= 6 && jest_kot(napis))
		document.getElementById("wynik").innerHTML = "Wyraz ma co najmniej 6 znaków .";
	
	else if (napis.length < 6 && jest_kot(napis))
		document.getElementById("wynik").innerHTML = "Wyraz nie ma co najmniej 6 znaków .";
}

function jest_kot(x)
{
	
}

 

komentarz zamknięcia: Rozwiązany problem

2 odpowiedzi

+3 głosów
odpowiedź 14 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
wybrane 15 czerwca 2018 przez ScriptyChris
 
Najlepsza

Ja bym to szczerze mówiąc zrobił po prostu regexp bez nadmiernego kombinowania w te różne warunki:

const reg = /^.{3,}kot$/i

reg.test('warkot');   //true
reg.test('łaskotki'); //false
reg.test('kot');      //false

i po prostu wywołując metodę RegExp.prototype.test jako argument przekaż jej wartość tego inputa, ewentualnie machnąłbym to jeszcze metodą String.prototype.trim() żeby z automatu usunąć początkowe i końcowe białe znaki, chyba, że chcesz robić aż tak rygorystyczną walidację, że te znaki uznasz za błędne.

komentarz 15 czerwca 2018 przez shotokan Nałogowiec (39,660 p.)
Tomek, wiemy, że jesteś jednym z ekspertów od wyrażeń regularnych. Jednak pamiętaj, że to jest egzamin z E.14, gdzie wymaga się podstaw JS i to takich ja bym to nazwał trywialnych. Większość uczniów, z mojego doświadczenia ma duże problemy z utworzeniem poprawnego wyrażenia regularnego jeśli w ogóle wiedzą co to jest:D
Jednak jak najbardziej Twój kod jest optymalny!
Pozdrawiam:)
1
komentarz 15 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
Przyznam, że nie doczytałem że jest to egzamin, sam nie kończyłem techniku więc szczerze mówiąc nie mam za bardzo odniesienia jak to wygląda na tych egzaminach :) To niech mój przykład pozostanie jakąś wskazówką na przyszłość jak jedna z form rozwiązania problemu :)
komentarz 15 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)

@Tomek Sochacki,

A jakbyście rozwiązali mój problem bazując na podstawach JS i na tym pdf?

PDF z odcinka 5 e.14

 

komentarz 15 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)
nie znam tego kursu ale poczytaj o metodzie slice(-3) i do tego właściwość length. Wieczorem jak nie zapomne to coś skrobne.
komentarz 15 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
Nie musisz znać tego kursu wystarczy, że zajrzysz do pdfa, którego wstawiłem. Powiedź mi czy mając te narzędzia do dyspozycji można napisać kod o którym pisałem wcześniej.
komentarz 15 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)

No to jeśli bez regexp to może po prostu najprostszą metodą:

function check(str) {
	return str.length > 5 && str.slice(-3) === 'kot';
}

check('warkot');   //true
check('łaskotki'); //false
check('kot');      //false

Najpierw sprawdzam, czy ciąg zawiera co najmniej 6 znaków (length > 5), a jeśli tak to sprawdzam drugi warunek, czyli czy ostatnie trzy znaki to 'kot'. Metoda String.prototype.slice wycina z ciągu znakowego fragment od wskazanego indeksu, a jeśli podasz go jako liczbę ujemną to zapis slice(-3) oznacza tak normalnymi słowami "wytnij ostatnie trzy znaki ciągu" i przyrównuję je po prostu do ciągu 'kot'.

komentarz 15 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
Ok, a co robi check("warkot"); oraz słowo return? Czy jak wstawię  str.length > 5 && str.slice(-3) === 'kot'  w warunek w if rezultat będzie taki sam? Rozumiem, że w tej sytuacji wstawienie apostrofów lub cudzysłowu nie ma znaczenia tak?
komentarz 15 czerwca 2018 przez Tomek Sochacki Ekspert (227,510 p.)

Cudzysłów i apostrof ma w JS to samo znaczenie.

Ok, a co robi check("warkot"); oraz słowo return?

Nie odpowiem na to pytanie w jednym komentarzu, bo wymagało by to wykładu na temat czym są funkcje w JS - poszukaj tego tematu w necie.

Możesz wstawić ten warunek w IF, on zwraca boolean więc jak najbardziej jest to dopuszczalne, zależy co chcesz osiągnąć, pytanie tylko po co Ci IF?

komentarz 15 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
Ok, dziękuję bardzo. Pomyślałem i przypomniałem sobie, że check('warkot'); wywołuje funkcje o parametrze warkot, która sprawdza czy ostatnie trzy litery to kot.

Temat można zamknąć.
+1 głos
odpowiedź 14 czerwca 2018 przez jeremus Maniak (59,720 p.)
podpowiedz:

substring(napis,napis.length-2,3) - zwróci Ci 3 ostatnie znaki napisu

stosujesz oczywiście dla length napisu >=3  aby nie było błądu
komentarz 15 czerwca 2018 przez MakaBresk Obywatel (1,060 p.)
Dzięki za odpowiedź lecz skorzystam z metody slice(-3) kolegi, który pisał wyżej.

Podobne pytania

0 głosów
1 odpowiedź 531 wizyt
pytanie zadane 3 kwietnia 2023 w C i C++ przez it_atari Początkujący (360 p.)
0 głosów
2 odpowiedzi 278 wizyt
0 głosów
0 odpowiedzi 140 wizyt

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 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!

...