fbed99da

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



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

Хотя Mathematica ориентирована на математические приложения, в ней достаточно полно представлены функции для работы со строками (strings). Они могут потребоваться как для организации вывода текстовых сообщений (например надписей на графиках), так и для организации текстового диалога при разработке пакетов расширений и приложений системы. К тому же надо постоянно помнить, что Mathematica — система символьной математики, так что символьным преобразованиям, как сугубо математическим, так и общепринятым, в ней, естественно, уделено много внимания.

Многие функции для работы со строками выполняют общепринятые преобразования, имеющиеся в большинстве языков программирования высокого уровня. Строкой является произвольная цепочка символов, заключенная в кавычки, например "String". Ниже представлены некоторые функции для работы со строками:

  • StringByteCount ["string"] — возвращает полное число байтов, используемых для хранения символов в строке "string";
  • StringDrop ["string", {m, n}] — возвращает строку "string", удалив в ней символы от m до п;
  • StringJoin["sl", "s2",...] или StringJoin [ { "s1", "s2",...}]-формирует строку, содержащую конкатенацию (объединение) указанных строк "s1";


  • Stringlnsert ["string1", "string2",M] — вставляет строку "string2" в строку "string1", начиная с позиции М от начала этой строки (при отри-, цательном М позиция отсчитывается от конца указанной строки);
  • StringLength ["string" ] — возвращает число символов в строке;
  • StringReplace["string", "s1 -> "spl"] или StringReplace["string", {"s1" -> "spl", "s2" -> "sp2",...}] — замещает "s1" на "spi" всякий раз, когда они появляются как подстроки "string";
  • StringReverse ["string"] — меняет порядок символов в строке "string" на противоположный;
  • StringPosition["string", "sub"] — возвращает список с позициями строки "sub" в строке "string" (дополнительные формы см. в справочной системе);
  • StringTake ["string", n] — возвращает строку, состоящую из первых п символов строки "string";
  • StringTake ["string", -n] — возвращает последние п символов из строки "string";
  • StringTake ["string", {n}] — возвращает n-й символ в строке "string";
  • StringTake ["string", {m, n}] — возвращает строку из символов, расположенных в позициях от m до п строки "string".
Эти функции хорошо известны программистам, работающим с современными языками программирования. Большое число дополнительных функций для работы со строками можно найти в приложении. Обилие таких функций в языке программирования системы Mathematica указывает на его универсальный характер и обширные возможности в решении даже на первый взгляд далеких от математики задач. Ниже приведены примеры действия ряда функций работы со строками.

Ввод (In) Вывод (Out)
StringByteCount [ "Hello ! " ] 6
StringDrop ["Hello my friend!", 6] my friend!
StringDrop ["Hello my friend! ", -10] Hello
StringDrop ["Hello my friend! ", {7}] Hello у friend!
StringDrop [ "Hello my friend ! " , { 6 , 8 } ] Hello friend!
Stringlnsert ["Hello friend!"," my", 6] Hello my friend!
StringJoin ["Hello"," my "]<>"friend!" Hello my friend!
StringLength [ "Hello" ] 5
StringPosition[ "Hello my friend! ", "e"] {{2, 2}, {13, 13}}
StringReplace["Hilo" , "i"->"el"] Hello
StringReverse [ "Hello ! " ] !olleH
StringTakef "Hello my friend!", 6] Hello
StringTake[ "Hello my friend!", -8] friend!
StringTake [ "Hello my friend ! " , { 7 , 9 } ] my
Отметим еще несколько функций, относящихся к работе с символами и строками:

  • FromCharacterCode [n] — возвращает строку, состоящую из одного символа с кодом n;
  • FromCharacterCode [ {n1, n2,...}] — возвращает строку, состоящую из последовательности символов с кодами ni;
  • Characters ["string"] — возвращает список целочисленных кодов, соответствующих символам строки "string";
  • ToLowerCase ["string"] — производит строку, в которой все буквы преобразованы в нижний регистр;
  • ToString [expr] — возвращает строку, соответствующую форме вывода выражения ехрг. Опции устанавливают ширину линии, тип формата и т. д.;
  • ToUpperCase [ "string" ] — вырабатывает строку, в которой все буквы преобразованы в верхний регистр;
  • Unique [ ] — создает новый символ с именем в форме $nnn (nnn — уникальный порядковый номер);
  • Unique [х] — создает новый символ с именем в форме x$nnn (nnn — уникальный порядковый номер);
  • Unique [ {х, у,...}]— создает список новых символов с уникальными именами;
  • Unique [ "ххх" ] — создает новый символ с именем в форме xxxnnn (nnn — уникальный порядковый номер);
  • Unique [name, {attrl, attr2,...}] — создает символ с указанными атрибутами attri;
  • UpperCaseQ [string] — возвращает True, если все символы строки string являются прописными буквами (верхнего регистра), иначе возвращает False.
Примеры, приведенные ниже, показывают работу с этими функциями.

Ввод (In)

Вывод (Out)

ToCharacterCode [ "Hello ! " ]

{72,101,108,108,111,33}

FromCharacterCode [ {72 , 101 , 108 , 108 , 111 , 33} ]

Hello!

ToExpression [ "2+3*4 " ]

14

ToLowerCase [ "HeLLo ! " ]

hello!

ToUpperCase [ "Hello" ]

HELLO

Ввод (In)

Вывод (Out)

x:=ToString[2+3*4]

X

14

Unique [ ]

$1

Unique [xyz]

xyz$2

Unique [xyz]

xyz$3

UpperCaseQ [ "Hello" ]

False

UpperCaseQ [ "HELLO" ]

True




Содержание раздела