Урок 3, Работа с текст/низове
(Бележка: Това видео е по-дълго от останалите; може да го гледате на няколко пъти, според както предпочитате.)
Допълнителни линкове към този урок:
- Уникод таблица (за числовия код на даден символ, натиснете символа, и след това намерете числото което е изписано след
&#
някъде в описанието—другите числа са в шестнадесетичен формат) - Части от този урок:
- 0:00 Въведение, Уникод
- 3:56 Методи на
String
: Линк към документацията в MDN - 4:50 Пример 1, азбука: Код;
String.fromCharCode()
,String.fromCharCode()
,string[..]
,string.length
- 14:55 Пример 2, потребител: Код;
string.indexOf()
,string.slice()
- 20:27 Пример 3, думи: Код;
string.split()
,textWidth()
- 28:22 Обобщение
- 29:42 Задача: Заготовка
- Външни/алтернативни ресурси:
Задача (също и във видеото)
Напишете функция/програма, която:
- Взима един низ, например от променлива или параметър
- Разделя този низ на думи, например със
string.split()
- Намира коя е най-дългата дума, например със
string.length
- Връща/показва къде се намира тази дума, например със
string.indexOf()
Пример за ситуация, в която подобен код би бил полезен: потребителя има право само на ограничено количество символи (примерно, 160, както в един SMS) в съобщението, което пише. За експеримент, искате да преместите курсора на най-дългата дума, за да може потребителя да си я скъси. За да може да преместим текстовия курсор, обаче, трябва да знаем до кой символ да го преместим.
Ако искате, може да използвате този примерен код за тази задача – във по-нататъшните уроци ще разгледаме повече за работата с полета за въвеждане на текст, а за сега може само да промените task
функцията отгоре, така че да изпълнява условието на задачата.
Алтернативно, може за използвате код подобен на този:
function setup() {
let string = "текста, в който търсим най-дългата дума"
let result = ...
// ...
print(result) // примерно 23, ако тирето в "най-дългата" е част от самата дума
}
Подсказка (за намиране на най-дългата дума)
Единствената част от тази задача, която не сме разглеждали преди, е как може да намерим най-малкия/най-големия елемент от някой масив. Има няколко начина, но най-честия начин е следния:
// Най-добрия елемент който сме намерили до тук:
let best
// Стандартен for цикъл; за всеки елемент от масива:
for (let i = 0; i < array.length; i ++) {
// Ако новия елемент е по-добър от досегашния: (в случая, ако новия е по-голям)
if (array[i] > best || best == undefined) {
// То, най-добрия елемент до тук е новия:
= array[i]
best
}
}// Тук, променливата best държи най-добрия елемент от масива
Тъй като търсим най-дългата дума, би трябвало да променим условието на if
-а вътре в цикъла, така че да провери дали новата дума е по-дълга от "най-добрата" дума до сега.