Работа со строками
Хотя 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
|
Содержание раздела