Invest-currency.ru

Как обезопасить себя в кризис?
3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Удаление символов из строки паскаль

Удаление символов из строки паскаль

Подраздел FAQ (ЧАВО, ЧАстые ВОпросы) предназначен для размещения готовых рабочих программ, реализаций алгоритмов. Это нечто вроде справочника, он наполнялся в течение 2000х годов. Ваши вопросы, особенно просьбы решить задачу, не пройдут предмодерацию. Те, кто наполнял раздел, уже не заходят на форум, а с теми, кто на форуме сейчас, лучше начинать общение в других разделах. В частности, решение задач — здесь.

Злостный любитель

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: 62

Часто встречается такая задача: дана строка S, удалить из неё все символы, равные данному символу c. Первое, что приходит на ум — это воспользоваться стандратной функцией Delete:


Однако, такой код вообще не будет работать. Дело в том, что верхний предел цикла вычисляется заранее, до выполнения цикла. Строка же при удалении из нее символов укорачивается. Таким образом, мы: а) будем пропускать символы при проверке, б) под конец цикла просто вылезем за текущий размер строки.

Если идти с конца, то мы получим уже как бы рабочий код:


Тем не менее, такой код для разбора больших текстовых документов (100КБ и больше) не годится по причине алгоритмической сложности, приводящей к существенным потерям времени. Дело в том, что Delete — это не мгновенная операция. При удалении символа надо сдвинуть весь остаток строки на одну позицию, то есть Delete работает за O(n). И тогда весь алгоритм работает за O(m*n), где m- количество удаляемых символов в тексте. Оно, как правило, тоже пропорционально длине текста.

Но существует алгоритм получше. Пусть перед нами поставили такую задачу: дана строка S1, получить строку S2, которая отличается от первой только отсутствием символа c. Наличие второй строки двигает мысль в другую сторону, в голове появляется алгоритм последовательного построения второй строки с нуля путём добавления в неё всех «хороших» символов из первой строки:


Уже лучше! Добавление символа в конец строки не влечет за собой сдвига хвоста, как вставка/удаление символа в середине. А если переписать эту же процедуру для массива произвольного типа? Тогда нам придётся отказаться от оператора + (или перезагрузить его). Также, придётся хранить длину в отдельной переменной.


Такой код уже работает за один проход массива, выполняя всю работу за положенное время O(n).
А теперь посмотрим внимательно на этот код и зададимся вопросом: а что нам мешает вместо S2 написать S1? Что нам мешает строить новый массив прямо на месте старого? Ведь запись может только отставать от текущего проверяемого элемента, но не опережать его — следовательно, она не портит непроверенные элементы. Тогда получается, что ничего не мешает написать так:


Это для статического массива, у которого номер последнего используемого элемента хранится в отдельной переменной.
Для строк код будет такой:


Для динамических массивов — такой:


Осталось заметить, что на (обычном) тексте в 440 кб удаление пробелов отработало:
— наивный код: за 15 секунд,
— обсужденный в этой статье алгоритм: меньше 10 миллисекунд.

Сообщение отредактировано: TarasBer — 6.11.2010 17:37

Удаление символов из строки паскаль

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:

n — максимально возможная длина строки — целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.

Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).

Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.

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

Выражения типа char можно присваивать любым строковым переменным.

В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st — это ‘Строка’, то st[1] — это ‘С’, st[2] — это ‘т’, st[3] — ‘р’ и так далее.

Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:

В этом примере переменная c приобретет значение ‘TurboPascal’.

Кроме слияния над строками определены операции сравнения ,=,<>, =. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.

Процедуры и функции для работы со строками

В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями. Функция возвращает в качестве результата значение текущей длины строки-параметра

Пример.
Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации «+» и работает немного менее эффективно, чем эта операция.
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.

Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.

Пример.
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.

Пример.
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.

Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x — может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.

Читать еще:  Високосный год паскаль

В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.
Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.
В данном случае функция возвращает код символа ch.
Если c — строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Удаление символов из строки паскаль

Перечислим основные процедуры и функции, которые предназначены для работы с переменными строкового типа.

1. Определение длины строки. Вычисление текущей длины строки производится с помощью функции Length. Ее общий вид следующий: Результатом данной функции является целое число, равное текущему количеству символов в строке. Например, при выполнении следующих конструкций: значение целой переменной K будет равно 12.

Со строковыми переменными можно производить операции сравнения ( , >=, <>) по правилу сравнения десятичных дробей. Сравнение строк осуществляется посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство или не кончится одна из строк (или обе сразу), при этом делается вывод о знаке неравенства. Например,

  • ‘Паскаль ‘>’Паскаль’ (первая строка будет больше второй, так как в первой строке еще присутствует пробел),
  • ‘Balkon’ Ord (‘B’)),
  • ‘Паскаль’=’Паскаль’ (строки совпадают посимвольно и равны по длине).

2. Удаление части символов строки. Для удаления из строки фрагмента используется процедура Delete, общий вид которой следующий:

Рис.1. Общий вид процедуры Delete

Например, при выполнении процедуры Delete(‘Язык Паскаль’,5 ,8) из строки будут удалены 8 символов, начиная с пятого, и исходная строка будет иметь вид: ‘Язык’.

3. Вставка символов в строку. Для вставки символов в строку используется процедура Insert. Ее общий вид следующий:

Рис.2. Общий вид процедуры Insert

Например, в результате выполнения процедуры Insert(‘111’, ‘ABC’,2); результирующая строка будет такой:’A111BC’.

4. Поиск подстроки в строке. Для определения позиции подстроки в строке используется функция Pos, общий вид которой следующий:

Рис.3. Общий вид функции Pos

Результат этой функции целое число. Оно определяет номер элемента, с которого начинается первое вхождение подстроки в строку. Если подстрока в строку не входит, то значение функции равно нулю. Например, при выполнении конструкции k1:=Pos(‘BC’,’ABCD’); значение переменной k1 равно 2, так как функция Pos возвращает номер элемента, с которого подстрока первый раз встречается в строке. При выполнении оператора k1:=Pos(‘ABCD’,’ BC’); значение переменной k будет равно нулю.

Приведем пример программы, иллюстрирующей выше описанные конструкции. Пусть в заданном тексте нужно заменить все вхождения подстроки ‘del’ на ‘insert’.

Решение и комментарии вы можете посмотреть здесь.

5. Склеивание строк. Для «склеивания» строк используется функция Concat, общий вид которой следующий:

Например, после выполнения следующих конструкций: на экран будет выведено сообщение: «Пароход «.

Замечание.
«Склеивание» строк можно производить, используя символ «+», например, C:=A+’о’+B; в результате строка C будет иметь вид: ‘Пароход’.

6. Копирование строк. Для копирования строк или их фрагментов используется функция Copy. Ее общий вид:

Рис.4. Общий вид функции Copy

Например, при выполнении оператора WriteLn(Copy (‘Язык Паскаль’,6,7)) на экран будет выведено сообщение:» Паскаль».

Часто возникает необходимость получить строковое представление числа и наоборот (например, получить строку ’13’ из числа 13). Для работы с числами и строками применяются следующие две процедуры.

7. Перевод числа в строку. Для перевода числа в строку используется процедура Str, общий вид которой следующий:

Рис.5. Общий вид процедуры Str

Например, Str(1.21, St); в результате выполнения процедуры строка будет такой: St=’1.21′.

8. Перевод строкового выражения в число. Для перевода строки в число используется процедура Val. Ее общий вид:

Рис.6. Общий вид процедуры Val

Если данная строка действительно является записью числа (целого или действительного), то значение признака будет равно нулю, иначе значение признака будет равно номеру первого символа, с которым процедура Val «не справилась», то есть преобразование этого символа является невозможным.

Например, при выполнении процедуры Val (‘1234’,N,K); значение переменной N будет равно 1234, а переменная K будет равна нулю, так как строка ‘1234’ является записью целого числа. При выполнении конструкции Val(’12-34′,N,K); значение переменной N не изменится, а переменная K будет равна трем, то есть номеру символа, с которого преобразование невозможно, так как знак «-» в записи чисел может быть только на первом месте.

Проиллюстрируем использование некоторых процедур и функций на примере следующей программы: подсчитать сумму цифр, входящих в данную строку.

Решение и комментарии вы можете посмотреть здесь.

На следующем шаге мы разберем еще несколько задач, при решении которых используются перечисленные конструкции.

Программирование. Строки и символы в PascalABC.net

Как организовать дистанционное обучение во время карантина?

Помогает проект «Инфоурок»

Описание презентации по отдельным слайдам:

Программирование. Строки и символы в PascalABC.net Автор: Комкова М.С. Учитель ИКТ, гимназия МИИТ, г. Москва

Описание переменных: Строки в Паскале – это данные типа string. var s: string; s1: string[9]; s2: shortstring; // синоним string[255] Они используются для хранения последовательностей символов.

В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.

Примеры описания строк: var s: string; s1: string[9]; s2: shortstring; begin s := ‘PascalABC.NET’; writeln(s,’ ‘,s.Length); SetLength(s,20); writeln(s,’ ‘,s.Length); s1 := s; writeln(s1,’ ‘,s1.Length); end.

Символ строки К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3]. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например: … s1[3] := ‘h’; writeln (s2[3] + ‘r’);

Читать еще:  Запись математических выражений на языке паскаль

Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например: … writeln(ord(st[0]));

Процедуры и функции для работы со строками Функция Concat (s1, s2, . sn) возвращает строку, являющуюся слиянием строк s1, s2, . sn. Функция Copy (s, start, len) возвращает подстроку длиной len, начинающуюся с позиции start строки s. Процедура Delete (s, start, len) удаляет из строки s, начиная с позиции start, подстроку длиной len.

Процедуры и функции для работы со строками Процедура Insert (subs, s, start) вставляет в строку s подстроку subs, начиная с позиции start. Функция Length (s) возвращает фактическую длину строки s, результат имеет тип byte. Функция Pos (subs, s) ищет вхождение подстроки subs в строку s и возвращает номер первого символа subs в s или нуль, если subs не содержится в s.

Строки и массивы символов array of char рассматриваться как строка постоянной длины

Вставка подстроки Задача: Вставить в заданную позицию строки другую строку. var s1,s2: string; i: byte; Begin write(‘Программа для вставки в заданную позицию строки другую строку’); write(‘Введите первый текст: ‘); readln(s1); write(‘Введите второй текст: ‘); readln(s2); write(‘Введите номер позиции, в которую надо вставить второй текст: ‘); readln(i); insert(s2,s1,i); writeln(s1); end.

Замена подстроки в строке var s,s_old,s_new: string; i,l_old: byte; begin write(‘Ведите текст: ‘); readln(s); write(‘Что заменить?’); readln(s_old); l_old := length(s_old); write(‘ Чем заменить? ‘); readln(s_new); i := pos(s_old,s); delete(s,i,l_old); insert(s_new,s,i); writeln(s); readln end. Задача: Найти в строке определенную последовательность символов и заменить ее другой.

Копирование части строки Задача: Скопировать часть строки с определенной позиции и определенной длины в другую строку. var s1,s2: string; n,len: byte; begin write(‘Введите текст: ‘); readln(s1); write(‘Введите номер позиции, с которой будет копироваться строка: ‘); read(n); write(‘Введите длину копируемой части: ‘); readln(len); s2 := copy(s1,n,len); writeln(‘Ты скопировал: ‘,s2); readln; end.

Задача Дана непустая строка S и целое число N (>0). Вывести строку, содержащую символы строки S, между которыми вставлено по N символов «*» (звездочка). program zvezda; Var s:string; N,i:integer; C:char; Begin Writeln(‘stroka’); Readln(s); Writeln(‘n’); Readln(n); C:=’*’; For i:=1 to n do Insert(c,s,n); Writeln(S); End.

Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз Задача program m2; var s:String; i,j,n,k:Integer; f:Boolean; begin Writeln(‘Введите строку:’); Readln(s); n:=Length(s); for i:=1 to n do begin f:=True; for j:=1 to n do if (i<>j) and (s[i]=s[j]) then f:=False; if f and (k=0) then Writeln(‘Символы,которые встречаются в строке один раз:’); if f then begin Write(s[i],’ ‘); inc(k); end; end; if k=0 then Writeln(‘В строке нет символов которые встречаются всего один раз.’); Readln; end.

Источники http://templated.ru/ingeneriya/117-informacionnye-tehnologii.html http://pascalabc.net/wiki/index.php?title=Строки_и_символы._Тексты_программ http://www.cyberforum.ru/pascalabc-net/thread1266946.html http://pas1.ru/book/export/html/300 http://programmado.ru/55-stroki-v-paskale-tip-string.html http://mojainformatika.ru/paskal/uroki-paskal-stroki/116-stroki-v-paskal.html http://nschool.by/text.php?cat=library&textid=10

Выберите книгу со скидкой:

История России. С древнейших времен до XVI века. 6 класс. Контурные карты

350 руб. 55.00 руб.

Контурные карты История России конец XVII-XVIII век. 8 класс. (Новые)

350 руб. 55.00 руб.

История России. 7 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

История России. 6 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

История России XX-начало XXI в. Атлас с контурными картами.

350 руб. 106.00 руб.

История России. XVI-конец XVII века. 7 класс. Контурные карты

350 руб. 55.00 руб.

История России. 8 класс. Рабочая тетрадь. История России. 8 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

История России XIX – начало XX века. 9 класс. Контурные карты (Историко-культурный стандарт)

350 руб. 55.00 руб.

История России. 9 класс. Рабочая тетрадь.

350 руб. 137.00 руб.

ЕГЭ. История России в таблицах и схемах для подготовки к ЕГЭ. 10-11 классы

350 руб. 80.00 руб.

ЕГЭ. История России в таблицах и схемах. 10-11 классы

350 руб. 80.00 руб.

История России в рассказах для детей. ХV — ХVII века

350 руб. 137.00 руб.

БОЛЕЕ 58 000 КНИГ И ШИРОКИЙ ВЫБОР КАНЦТОВАРОВ! ИНФОЛАВКА

Инфолавка — книжный магазин для педагогов и родителей от проекта «Инфоурок»

Бесплатный
Дистанционный конкурс «Стоп коронавирус»

  • Приходько Мария Сергеевна
  • Написать
  • 1615
  • 18.03.2016

Номер материала: ДВ-536571

Добавляйте авторские материалы и получите призы от Инфоурок

Еженедельный призовой фонд 100 000 Р

  • 18.03.2016
  • 1799
  • 18.03.2016
  • 2741
  • 18.03.2016
  • 554
  • 18.03.2016
  • 18034
  • 18.03.2016
  • 527
  • 18.03.2016
  • 627
  • 18.03.2016
  • 459

Не нашли то что искали?

Вам будут интересны эти курсы:

Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.

Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако редакция сайта готова оказать всяческую поддержку в решении любых вопросов связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.

Программирование на языке паскаль

Реклама на сайте

Опрос

Рубрики

Подписка

Работа со строками

Структура строк

L – длина строки. В структурах строк верхняя строка – байты строки, нижняя – номера байтов.

Строка ShortString

Используется кодировка ANSI. Строка размещается компилятором в статической памяти. Для одного символа отводится 1 байт. Под строку ShortString выделяется память размером L+1 байт.

Строка WideString

Используется кодировка Unicod. Строка размещается в динамической памяти. Для одного символа отводится 2 байта. В статической памяти компилятор создает указатель размером в 4 байта, в который при создании строки заносится адрес ее начала. Указатель до создания строки и после ее удаления содержит nil – признак отсутствия данных. Под строку WideString всего выделяется память размером L*2+4 байт.

L 30 . В два раза меньше, чем у AnsiString

Читать еще:  Алгоритм на языке программирования

Строка PChar

Используется кодировка ANSI. Это нуль-терминальная строка. Признаком ее конца является код #0. Строка размещается в динамической памяти. Для одного символа отводится 1 байт. В статической памяти компилятор создает указатель размером в 4 байта, в который при создании строки заносится адрес ее начала. Указатель до создания строки и после ее удаления содержит nil – признак отсутствия данных. Под строку PCar всего выделяется память размером L+1 байт.

L не ограничена

Строка PWideChar

Используется кодировка Unicod. Это нуль-терминальная строка. Признаком ее конца является код #0. Строка размещается в динамической памяти. Для одного символа отводится 2 байта. В статической памяти компилятор создает указатель размером в 4 байта, в который при создании строки заносится адрес ее начала. Указатель до создания строки и после ее удаления содеожит nil – признак отсутствия данных. Под строку PWideCar всего выделяется память размером L*2+1 байт.

Методы обработки строк

В модулях System, SysUtils, Strings определены методы для обработки строк. Функциональное назначение методов:

  • Создание и удаление строк.
  • Копирование и объединение.
  • Длина и позиционирование.
  • Представление строки.
  • Преобразования строки в иной тип.
  • Преобразования иного типа в строку.
  • Сравнение строк.

Ниже рассмотрены наиболее часто используемые методы.

Строки String

Средства модуля System

Средства модуля SysUtils

В функции FloatToStrF Format может принимать значения:

  • ffcurrency – денежный,
  • ffExponent – научный,
  • ffFixed – фиксированный,
  • ffGeneral – обобщенный, с самым коротким результатом,
  • ffNumber – фиксированный с разделителями тысяч.

Примеры

Пример 1 . Создание строк.

uses SysUtils; // Ссылка на модули

Str:=’123456789’; // Cтрока Str

Index:=5; // Начальная позиция (счет с 1)

Count:=3; // Сколько символов

Delete(Str,Index,Count); // Удаление 3-х символов

Substr:=StringOfChar(‘A’,4); // Подстрока Substr = ‘AAAA’

Insert(Substr,Str,Index); // Ввод Substr в Str с позиции 5

readln; // Пауза, смотрю результат

Пример 2 . Копирование и объединение строк.

uses SysUtils; // Ссылка на модули

Source:=’ABCD’; // Строка источник

Index:=5; // Начальная позиция (счет с 1)

Count:=3; // Сколько символов

writeln(S1); // Ответ 12345

writeln(Source); // Ответ ABCD

S1:=Concat(S1,Source); // Вызов функции конкатенации

writeln(S1); // Ответ 12345ABCD

S1:=S1+Source; // Операция конкатенации

writeln(S1); // Ответ 12345ABCDABCD

S2:=Copy(S1,Index,Count); // Копирование подстроки

writeln(S2); // Ответ 5AB

readln; // Пауза, смотрю результат

Пример 3 . Длина и позиционирование.

uses SysUtils; // Ссылка на модули

L:=Length(S); // Определение длины строки

writeln(L); // Ответ 9.

P:=Pos(SubStr,S); // Определение позиции подстроки.

writeln(P); // Ответ 5.

readln; // Пауза, смотрю результат

Пример 4 . Преобразования String в иной тип

uses SysUtils; // Ссылка на модули

Str(x:7:3,Str); // Число => строка

writeln(Str); // Ответ 123.450 (3 дробных позиции)

Str(x,Str); // Число => строка

writeln(S); // Ответ 1.2345000000E+02

Val(Str,Val,Code); // Строка => число

writeln(Val); // Ответ 1.2345000000E+02

Val(’123Z’,Val,Code); // Строка => число с ошибкой

writeln(Val,Code); // Ответ 4 – номер позиции с ошибкой

readln; // Пауза, смотрю результат

Пример 5 . Преобразования иного типа в String

uses SysUtils; // Ссылка на модули

Str(X:7:3,S); // Число => строка

writeln(S); // Ответ 123.450 (3 дробных позиции)

Str(X,S); // Число => строка

writeln(S); // Ответ 1.2345000000E+02

Val(S,V,Code); // Строка => число

writeln(V); // Ответ 1.2345000000E+02

S:=FloatToStr(V,ffFixed,6,3); // Число => строка с форматом

writeln(S); // Ответ 123.450

readln; // Пауза, смотрю результат

Строки PChar

Средства обработки определены в модуле String. Строки PChar создаются в динамической памяти.

Пример 1 . Создание и удаление строк

uses SysUtils; // Ссылка на модули

p:=StrNew(’1234′); // Создать строку (аргумент не пустой)

StrDispose(p); // Удалить строку

Пример 2 . Копирование и объединение

uses SysUtils; //Ссылка на модули

s1,s2:string; // Переменные типа string

p1,p2,p3:pChar; // Переменные типа pChar

p1:=StrNew(‘AAAAAAAAAAAAAAAA’); // Создать в ДП переменную p1

p2:=StrNew(’123456′); // Создать в ДП переменную p2

p3:=StrNew(‘abcdef’); // Создать в ДП переменную p3

StrCopy(p1,p2); // Копировать p2 в p1

s1:=StrPas(p1); // Преобразовать p1 в s1 для вывода

writeln(s1); // s1 = 123456

StrLCopy(p1,p2,4); // Копировать p2 в p1 с ограничением длины

p1:=StrMove(p1,p3,2); // Копирование из p3 2 элементов в p1 с заменой

p1:=StrLCat(p1,p2,8); // Дописать p3 в p1 с ограничением длины

readln; // Пауза, смотрю результат

Пример 3 . Длина и позиционирование

uses SysUtils; // Ссылка на модули

s1,s2:string; // Переменные типа string

p0,p1,p2:pChar; // Переменные типа pChar

L:word; // Длина строки

p1:=StrNew(’12345678′); // Создать в ДП переменную p1

p2:=StrNew(’12345′); // Создать в ДП переменную p2

L:=StrLen(p1); // Длина строки p1

p0:=p2; // Запомнить переменную p2 в p0

while p2<>StrEnd(p2) do // Повторять в цикле до конца строки

P2^:=‘!’; // Заполнить p2 знаками ”!”

Inc(p2); // Увеличить указатель

Inc(L); // Увеличить L на 1

p2:=p0; // Восстановить p2 (на начало)

s2:=StrPas(p2); // Преобразовать p2 в s2

readln; // Пауза, смотрю результат

Пример 4 . Преобразования pChar String

uses SysUtils; // Ссылка на модули

s1,s2,s3:string; // Переменные типа String

p1,p2,p3:pChar; // Переменные типа pChar

s1:=’AaBbDdЖж’; // Переменная s1

p1:=StrNew(’12345678′); // Создать в ДП переменную p1

p2:=StrNew(’12345678′); // Создать в ДП переменную p2

p3:=StrNew(’12345678′); // Создать в ДП переменную p3

p1:=StrPCopy(p1,s1); // Копировать s1 в p1

StrCopy(p2,p1) // Копировать p1 в p2

StrCopy(p3,p1); // Копировать p1 в p3

p2:=StrLower(p1); // Получить в p2 строчные буквы

p3:=StrUpper(p1); // Получить в p3 прописные буквы

s2:=StrPas(p2); // Преобразовать p2 в s2

s3:=StrPas(p3); // Преобразовать p3 в s3

writeln(s1); // s1 = AaBbDdЖж

writeln(s2); // s2 = aabbccЖж

writeln(s3); // s3 = AABBDDЖж

readln; // Пауза, смотрю результат

Пример 5 . Сравнение строк

uses SysUtils; // Ссылка на модули

p1,p2,p3,p4,p5,p6:pChar; // Переменные типа pChar

x:integer; // Для результата сравнения

p1:=StrNew(‘ABC123′); // Создать в ДП переменную p1

p2:=StrNew(‘abc123’); // Создать в ДП переменную p2

p3:=StrNew(‘ABC123′); // Создать в ДП переменную p3

p4:=StrNew(’ABC456’); // Создать в ДП переменную p4

p5:=StrNew(‘ФЫВ123′); // Создать в ДП переменную p5

p6:=StrNew(’фыв456’); // Создать в ДП переменную p6

Ссылка на основную публикацию
ВсеИнструменты 220 Вольт
Adblock
detector