Удаление введенных в ходе сессии определений. Работа со строками.
Мы уже не раз отмечали возможность уничтожения введенных в ходе сессии определений. Приведем в систематизированной форме функции, используемые для этого:
- Clear [symbol1, symbol2,…] – стирает значения и определения для указанных символов (идентификаторов);
- Clear ["pattern1", "pattern2",…] – стирает значения и определения для всех символов, чьи имена подходят под любой из указанных строковых шаблонов;
- ClearAll [symbol1, symbol2,…] – стирает все значения, определения, атрибуты, сообщения и значения, принятые по умолчанию, связанные с указанными символами;
- ClearAll ["pattern1", "pattern2",…] – стирает все символы, чьи имена буквально подходят к одному из указанных строковых образцов;
- ClearAttributes [s, attr] – удаляет attr из списка атрибутов символа s.
Применение большинства этих функций полезно разработчику серьезных приложений для систем Mathematica, например новых пакетов расширений и применений системы. В то же врем-я, для большинства пользователей вполне достаточно возможностей, предоставляемых системой по умолчанию – средств диалога с ее оболочкой и функций Input и Print.
Работа со строками
Хотя Mathematica ориентирована на математические приложения, в ней достаточно полно представлены функции для работы со строками (strings). Они могут потребоваться как для организации вывода текстовых сообщений (например надписей на графиках), так и для организации текстового диалога при разработке пакетов расширений и приложений системы. К тому же надо постоянно помнить, что Mathematica – система символьной математики, так что символьным преобразованиям, как сугубо математическим, так и общепринятым, в ней, естественно, уделено много внимания.
Многие функции для работы со строками выполняют общепринятые преобразования, имеющиеся в большинстве языков программирования высокого уровня. Строкой является произвольная цепочка символов, заключенная в кавычки, например "String". Ниже представлены некоторые функции для работы со строками:
- StringByteCount ["string"] – возвращает полное число байтов, используемых для хранения символов в строке "string";
- StringDrop ["string", {m, n}] – возвращает строку "string", удалив в ней символы от m до n;
- 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 |