Работа со строками
Работа со строками 
Хотя 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
 |