Форум программистов, компьютерный форум, киберфорум
Lazarus
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 3
1

Строки: текст, заключённый между "#" и "#" необходимо записать прописными буквами

06.12.2017, 16:40. Показов 1254. Ответов 11

Author24 — интернет-сервис помощи студентам
Я, походу, немного глупая прошу помощи. Есть задание к лабораторной, в которой я не могу понять что вообще и при каких действиях должно происходить, кроме того, что должны исчезнуть #. Объясните, кому не сложно и, если можно, накидайте примерный код)) Нужно сделать в лазарусе.
Задание:
Пусть текст, заключённый между # и # необходимо записать прописными буквами. Из исходной строки выделить все участки, которые необходимо записать прописными буквами, вывести на экран исходную строку без символов #, но с правильным размером символов.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.12.2017, 16:40
Ответы с готовыми решениями:

Переписать файл, выделяя текст между кавычками прописными буквами
Помогите, пожалуйста. Только начал изучать С++. Задали написать вот такую программу: "В ...

Сделать из строки с строчными буквами массив из строк с заглавными и прописными буквами
Учитывая строку, заглавные буквы, которые занимают четные индексы и нечетные индексы отдельно, и...

Заменить текст с прописными буквами и с заглавными
Есть ли какойто способ чтобы не дублировать каждый раз с заглавной буквой? gsub("Going...

Даны три слова. Третье записать прописными буквами
string n = Console.ReadLine(); string p = " "; int i = n.IndexOf(p); int k =...

11
272 / 176 / 30
Регистрация: 16.03.2017
Сообщений: 1,631
06.12.2017, 22:30 2
разбираюсь в этом не очень, (уверен что есть более гибкие инструменты) но пару "костылей" предложу...

если работаете с кирилицей, то возможны проблемы с юникодом. Обычные str1[i] могут давать "часть символа"!
Пользуюсь LazUTF8 (в юниты добавь) для UTF8Length(str1) и UTF8Copy(str1, 1, 5)
попробуй циклом перебрать строку в поисках for i=1 to UTF8Length(str1) do if(UTF8Copy(str1, i, 1)="#" then...
а дальше уже "магия/нудота парсинга" - найди "начало", запомни, ищи "конец", запомни...
там-же вроде видел UTF8UpperCase для перевода в прописные...
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
06.12.2017, 23:59 3
Лучший ответ Сообщение было отмечено RockershAz как решение

Решение

Цитата Сообщение от andyj Посмотреть сообщение
а дальше уже "магия/нудота парсинга" - найди "начало", запомни, ищи "конец", запомни...
Не нужна тут никакая магия, все делается гораздо проще: строка разбивается по символам # на массив строк, в котором, разумеется, все элементы с нечетными индексами (индексация же с нуля начинается) будут те, которые нужно перевести в верхний регистр, а с четными - те, которые не нужно менять. Вот и проходим по массиву, заменяя то, что нужно. А потом склеиваем строку назад:
Pascal
1
2
3
4
5
6
7
8
9
10
11
var
  s : string;
  arr : TStringArray;
  i : integer;
begin
  s := 'Вот #в это#м тексте #нужн#о некоторые ча#ст#и выделить регистром';
  arr := s.Split(['#']);
  for i := 0 to pred(Length(arr)) do if odd(i) then arr[i] := UTF8UpperCase(arr[i]);
  s := s.Join('', arr);
  ShowMessage(s);
end;
Никакой нудноты... Это не Турбо-Паскаль.

LazUTF8 все-таки в uses придется добавить...
1
389 / 188 / 47
Регистрация: 11.07.2013
Сообщений: 1,120
07.12.2017, 09:31 4
volvo, при попытке повторить ваш код Lazarus "ругается" на 3, 7, 8 и 9 строки. Не могу утверждать, но вы вероятно используете Helper types http://wiki.freepascal.org/Helper_types.
Не могли бы вы подробнее рассказать, как его подключать и справедливы ли для Lazarus-а вот эти процедуры и функции: http://asd-soft.ru/tstringhelper-delphi/
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2017, 09:43 5
А у меня не ругается.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
uses LazUTF8;
procedure TForm1.Button1Click(Sender: TObject);
var
  s : string;
  arr : TStringArray;
  i : integer;
begin
  s := 'Вот #в это#м тексте #нужн#о некоторые ча#ст#и выделить регистром';
  Label1.Caption:=s;
  arr := s.Split(['#']);
  for i := 0 to pred(Length(arr)) do if odd(i) then arr[i] := UTF8UpperCase(arr[i]);
  s := s.Join('', arr);
  Label2.Caption:=s;
end;
Версия Лазарус 1.6.4
Миниатюры
Строки: текст, заключённый между "#" и "#" необходимо записать прописными буквами  
0
389 / 188 / 47
Регистрация: 11.07.2013
Сообщений: 1,120
07.12.2017, 11:25 6
Делаю как у вас, а получаю:
Строки: текст, заключённый между "#" и "#" необходимо записать прописными буквами

Вот код 123.rar. Лазарус "из коробки", т.е. никакие дополнительные настройки не делались.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2017, 11:27 7
Может версия Лазарус какая-то старая?
0
389 / 188 / 47
Регистрация: 11.07.2013
Сообщений: 1,120
07.12.2017, 11:30 8
Лазарус 1.6, FPC 3.0.0 (laz4android1.6.0-FPC3.0.0.exe)
Может какие-то дополнительные настройки нужны или лучше установить обычную сборку (lazarus-1.6.0-fpc-3.0.0-win32.exe)?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
07.12.2017, 12:18 9
Цитата Сообщение от shyub Посмотреть сообщение
Лазарус 1.6
Да в этой IDE приведенный код не принимает, обновите Лазарус.
1
389 / 188 / 47
Регистрация: 11.07.2013
Сообщений: 1,120
07.12.2017, 12:51 10
А есть ли возможность выполнить какие-то настройки, чтобы код заработал?
Отказываться от laz4android1.6.0-FPC3.0.0 не могу, т.к. иногда бывает необходимость делать небольшие утилиты под Android. Если установить рядом lazarus-1.6.4-fpc-3.0.2-win32, то не возникнет ли между ними конфликт?
0
0 / 0 / 0
Регистрация: 06.12.2017
Сообщений: 3
07.12.2017, 12:56  [ТС] 11
Суть поняла, дальше разберусь, спасибо огромное за помощь
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
07.12.2017, 13:45 12
Цитата Сообщение от shyub Посмотреть сообщение
А есть ли возможность выполнить какие-то настройки, чтобы код заработал?
Нет. До 1.6.4 невозможно использовать helper-ы. Но обновляться все равно нужно - сегодня вышел 1.8, так что у тебя уже сильно устаревшая версия.
1
07.12.2017, 13:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2017, 13:45
Помогаю со студенческими работами здесь

Файл: Получить в файле текст, записанный прописными буквами.
Дан файл содержащий текст набранный строчными русскими буквами. Получить в другом файле тот же...

Работа с текстовыми файлами. Преобразовать текст, записав ключевые слова прописными буквами, а остальные строчными
Доброго времени суток всем! Помогите пожалуйста решить задачу. В одном файле дан исходный текст...

Преобразовать текст, записав все зарезервированные слова прописными буквами, а остальные конструкции (имена и так далее) — строчными
Дан текст программы на каком-либо алгоритмическом языке и словарь зарезервированных слов этого...

Печатать текст крупными буквами с некоторомы паузами между буквами
Помогите пожалуйста решить задачу: заданный текст печатать крупными буквами с некоторыми паузами...

Напишите программу JavaScript, чтобы проверить первый символ строки прописными буквами или нет
<form name="form1"> <div>----------- Задание 1 -----------</div><br> Введите строку: <input...

Извлечь из строки текст, заключенный в кавычки
Доброго времени суток! Подскажите пожалуйста не как не могу разобраться с регулярными...

Из строки требуется удалить текст, заключенный в фигурные скобки
Вот несколько заданий которые ну вообще ни как не могу понять! Просто только начал изучать С# тут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru