ВУЗ:
Составители:
Рубрика:
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
- …
- следующая ›
- последняя »
