Основные элементы языка программирования Icon. Чанышев О.Г. - 12 стр.

UptoLike

Составители: 

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