Skip to content
От: Божидар Маринов Дата: Последна промяна:

Урок 3, Работа с текст/низове

(Бележка: Това видео е по-дълго от останалите; може да го гледате на няколко пъти, според както предпочитате.)

Допълнителни линкове към този урок:

Задача (също и във видеото)

Напишете функция/програма, която:

  1. Взима един низ, например от променлива или параметър
  2. Разделя този низ на думи, например със string.split()
  3. Намира коя е най-дългата дума, например със string.length
  4. Връща/показва къде се намира тази дума, например със 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) {
    // То, най-добрия елемент до тук е новия:
    best = array[i]
  }
}
// Тук, променливата best държи най-добрия елемент от масива

Тъй като търсим най-дългата дума, би трябвало да променим условието на if-а вътре в цикъла, така че да провери дали новата дума е по-дълга от "най-добрата" дума до сега.