ВУЗ:
Составители:
Рубрика:
23
Вы можете подстроке строки, заданной переменной, при-
своить подстроку, но не литералу:
S[9:15]:="xxxxxx" – нормально,
но не "This is string"[9:15]:="xxxxxxx".
S[i+:j] эквивалентно S[i:i+j], S[i-:j] эквивалентно S[i:i-j],
5.2. Операторы для работы со строками
procedure main()
s1:="String 1"
s2:="String 2"
s3:="String 3"
s4:="String 2"
s5:="STRING 2"
s7:="string string string"
write(s1||" "||s2||" "||s3||" "||s4||" "||"STRING 2")
if s1==s2 then write("s1==s2") # Не верно
if s1==s3 then write("s1==s3") # Не верно
if s2==s4 then write("s2==s4") # Верно
if s1»s2 then write("s1»s2") # # Не верно
if s1»s2 then write("s1»s2") # Верно
if s5»s4 then write(s5»s4) # Верно
every write(" ",!s3) # ! – выбор первого символа
every write(s3[1 to *s3]) # эквивалентно
write(?s3) # ?s3 – выбор произвольного символа
end
5.3. Функции для преобразования
строк
center(s,i) – выравнивание по центру на длину i, если i>*s, то
функция возвращает i центральных символов. Работает с кирил-
лицей.
center(s,i,s2) – выравнивание по центру на длину i с добавле-
нием слева и справа символов из строки s2.
char(i) – возвращает односимвольную строку, соответствую-
щую представлению символа в виде целого числа (от 0 до 255).
map(s) – удобно использовать для преобразования строки
из
верхнего в нижний регистр.
24
map(s1,s2,s3) – каждый символ в s1, встречающийся в s2 в
позиции j, заменяется на s3[j].
mapstrs(s,L1,L2) – замена подстрок, L1 и L2 – списки под-
строк. Каждая подстрока в s, являющаяся элементом L1, заменяет-
ся на соответствующий элемент L2. (Следуют подключить модуль
mapstrs из библиотеки Icon'а, т. е. link mapstrs).
replace(s1,s2,s3) – каждое появление s2 в s1 заменяется на s3.
repl(s,i) – i раз повторяет строку s: s||s...||s.
revers(s) – реверсирует s.
string(x) – преобразует число или множество символов (cset)
в строку.
trim(s) – удаляет концевые пробелы из s.
5.4. Функции сканирования строк
Общая форма функций сканирования строк:
function(x,s,i,j), где x – это то, что мы ищем, s – просматри-
ваемая строка, i – позиция начала поиска, j – позиция завершения
поиска.
Некоторые функции возвращают первую позицию найден-
ного, другие – все позиции вхождения.
any(c,s)
– возвращает 2, если s[1] существует и является
символом в множестве (cset) , иначе – неуспех.
any(c,s,i)
– возвращает i+1, если s[i] существует и является
символом в множестве (cset) c, иначе – неуспех.
any(c,s,i,j)
– возвращает i+1 (i<j) , если s[i] существует и яв-
ляется символом в множестве (cset) c, иначе – неуспех.
find(s1,s2)
– возвращает все начальные позиции вхождения
s1 в s2.
в пределах от 1 до *s2-*1 (естественно, в контексте генера-
ции, иначе возвращает только позицию первого вхождения).
Пример:
procedure main()
s:="1D2a3b4c5d2a12342a"
every writes(" ",find("2a",s))
end
Выход: 3 11 17
Вы можете подстроке строки, заданной переменной, при- map(s1,s2,s3) – каждый символ в s1, встречающийся в s2 в своить подстроку, но не литералу: позиции j, заменяется на s3[j]. S[9:15]:="xxxxxx" – нормально, mapstrs(s,L1,L2) – замена подстрок, L1 и L2 – списки под- но не "This is string"[9:15]:="xxxxxxx". строк. Каждая подстрока в s, являющаяся элементом L1, заменяет- S[i+:j] эквивалентно S[i:i+j], S[i-:j] эквивалентно S[i:i-j], ся на соответствующий элемент L2. (Следуют подключить модуль mapstrs из библиотеки Icon'а, т. е. link mapstrs). 5.2. Операторы для работы со строками replace(s1,s2,s3) – каждое появление s2 в s1 заменяется на s3. repl(s,i) – i раз повторяет строку s: s||s...||s. procedure main() revers(s) – реверсирует s. s1:="String 1" string(x) – преобразует число или множество символов (cset) s2:="String 2" в строку. s3:="String 3" trim(s) – удаляет концевые пробелы из s. s4:="String 2" s5:="STRING 2" 5.4. Функции сканирования строк s7:="string string string" write(s1||" "||s2||" "||s3||" "||s4||" "||"STRING 2") Общая форма функций сканирования строк: if s1==s2 then write("s1==s2") # Не верно function(x,s,i,j), где x – это то, что мы ищем, s – просматри- if s1==s3 then write("s1==s3") # Не верно ваемая строка, i – позиция начала поиска, j – позиция завершения if s2==s4 then write("s2==s4") # Верно поиска. if s1»s2 then write("s1»s2") # # Не верно Некоторые функции возвращают первую позицию найден- if s1»s2 then write("s1»s2") # Верно ного, другие – все позиции вхождения. if s5»s4 then write(s5»s4) # Верно any(c,s) – возвращает 2, если s[1] существует и является every write(" ",!s3) # ! – выбор первого символа символом в множестве (cset) , иначе – неуспех. every write(s3[1 to *s3]) # эквивалентно any(c,s,i) – возвращает i+1, если s[i] существует и является write(?s3) # ?s3 – выбор произвольного символа символом в множестве (cset) c, иначе – неуспех. end any(c,s,i,j) – возвращает i+1 (i*s, то в пределах от 1 до *s2-*1 (естественно, в контексте генера- функция возвращает i центральных символов. Работает с кирил- ции, иначе возвращает только позицию первого вхождения). лицей. Пример: center(s,i,s2) – выравнивание по центру на длину i с добавле- procedure main() нием слева и справа символов из строки s2. s:="1D2a3b4c5d2a12342a" char(i) – возвращает односимвольную строку, соответствую- every writes(" ",find("2a",s)) щую представлению символа в виде целого числа (от 0 до 255). end map(s) – удобно использовать для преобразования строки из Выход: 3 11 17 верхнего в нижний регистр. 23 24
Страницы
- « первая
- ‹ предыдущая
- …
- 10
- 11
- 12
- 13
- 14
- …
- следующая ›
- последняя »