Что можно делать с текстом
В Small Basic, как и в других языках программирования, можно совершать различные операции: вырезать части, находить символы, склеивать и т.д.Try It Out
1. Текст содержит символ
Для начала, научимся определять, содержит ли введённый пользователем текст определённые символы.1.1. Попросим пользователя ввести текст и определить его тип: повествовательный (розповідне), вопросительный (питальне) или побудительный (спонукальне):
TextWindow.WriteLine("Пожалуйста, введите ваше предложение.")
sentence = TextWindow.Read()
1.2. Если во введённом тексте обнаружится знак вопроса, то вывести сообщение о том, что предложение вопросительное. Если восклицательный знак – побудительное. Во всех остальных случаях – повествовательное.
' Проверим, есть ли в предложении знак вопроса или восклицательный знак
If Text.IsSubText(sentence,"?") Then
TextWindow.WriteLine("Ваше предложение вопросительное")
ElseIf Text.IsSubText(sentence,"!") Then
TextWindow.WriteLine("Ваше предложение побудительное")
' Если нет, то предложение повествовательное
Else
TextWindow.WriteLine("Ваше предложение повествовательное")
EndIf
1.3. Всё это обернём в бесконечный цикл.
2. Поиск в тексте месторасположения (индекса) символа
Иногда нам нужно не просто определить, содержит ли текст какие-то символы, а определить индекс этого символа(лов).TextWindow.WriteLine("Пожалуйста, введите ваше предложение и я найду расположение запятой")
sentence = TextWindow.Read()
index = Text.GetIndexOf(sentence,",")
TextWindow.WriteLine(index)
3. Обрезка текста
Частая задача – порезать текст на кусочки по какому-либо критерию.3.1. Добавим текст, добудем у него только первые 8 символов и запишем в новую переменную
sentence = TextWindow.Read()
sliced = Text.GetSubText(sentence ,1,8) ' 1 – начать с 1 символа, 8 – закончить на 8 символе
TextWindow.WriteLine(sliced)
3.2. Теперь от этой переменной добудем хвостик, начиная с 3 символа включительно и запишем новое значение в эту же переменную
sliced = Text.GetSubTextToEnd(sliced,3)
4. Поиск символа и разбивка текста по этому символу
Рассмотрим и такой пример: пользователь вводит координату в формате "x;y" и в этой координате отрисовывается эллипс случайного цвета.4.1. Сначала зациклим этот процесс. Просим пользователя ввести координаты.
while "true"
TextWindow.WriteLine("Введите координаты в формате x;y")
coords = TextWindow.Read()
EndWhile
4.2. Найдём индекс символа точки с запятой. Всё, что будет слева от неё – это х, всё, что справа – это у!
index = Text.GetIndexOf(coords,";")
x = Text.GetSubText(coords,1,index-1)
y = Text.GetSubTextToEnd(coords,index+1)
4.3. Отрисовываем эллипс в заданных координатах:
GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor()
ellipse = Shapes.AddEllipse(40,40)
Shapes.Move(ellipse,x,y)
4.4. Ответьте, почему при обрезке текста мы брали index-1 и index+1?
В конспект
Проверка содержания символаText.IsSubText(sentence,"!") ' возвращает true, если в sentence обнаружится символ "!"
Поиск индекса символа в тексте
index = Text.GetIndexOf(text,subtext)
Обрезка текста от номера begin и до номера end
sliced = Text.GetSubText(text,begin,end)
Обрезка текста от begin до конца текста
sliced = Text.GetSubTextToEnd(text,begin)
Задачи
Задача 11.1*. Добавьте в код из 1 пункта Try It Out проверку и определение предложения на такие символы:"..." – предложение задумчивое
"=(" – вам грустно
"=)" – вы улыбаетесь
"привет" – предложение с приветствием
Задача 11.2**. Посчитать количество букв "а" во введённом тексте
Задача 11.3**. Дополнить код из пункта 4 TryItOut ещё одним параметром: теперь пользователь не просто вводит две координаты но и диаметр эллипса в формате: "x;y;diameter"
Задача 11.4***. Разделить введённый текст по словам (используйте запятые как разделители), записав их в массив. Выведите этот массив в текстовое окно.
Текст: "Rammstein,Pink Floyd,Radiohead,Nightwish,Mistral,Portishead"
Задача 11.5**. Проверка текста на СПАМ. Проверьте, содержит ли введённая пользователем фраза такие слова как: "выплаты", "халява", "бесплатно". Чтобы облегчить проверку, введённый пользователем текст конвертируйте в нижний регистр – используйте метод Text.ConvertToLowerCase()
Потому что "Халява", "хАлЯвА" и "халява" – это разные величины.
Задача 11.6**. Имитация "Возможно вы имели в виду...". Пользователь вводит слово на русском языке но английскими буквами. Программа выводит правильное слово.
Пример:
Ввод: ghbdtn
Вывод: привет
jjjj
ОтветитьУдалить