Создание строк
Следующие функции создают строки, либо с нуля, либо путем объединения или разделения строк. (Для функций, создающих строки на основе изменённого содержимого других строк, таких как string-replace и replace-regexp-in-string, см. Поиск и замена.)
- Функция: make-string count character &optional multibyte
-
Эта функция возвращает строку, состоящую из count повторений символа character. Если count отрицательно, генерируется ошибка.
(make-string 5 ?x) ⇒ "xxxxx" (make-string 0 ?x) ⇒ ""Обычно, если character является символом ASCII, результат — строка с одним байтом на символ. Но если необязательный аргумент multibyte имеет не-
nil, функция создаст строку с несколькими байтами на символ. Это полезно, когда вам нужно впоследствии конкатенировать результат с не-ASCII строками или заменить некоторые из его символов не-ASCII символами.Другие функции для сравнения с этой включают
make-vector(см. Векторы) иmake-list(см. Создание списков).
- Функция: string &rest characters
-
Возвращает строку, содержащую символы characters.
(string ?a ?b ?c) ⇒ "abc"
- Функция: substring string &optional start end
-
Эта функция возвращает новую строку, состоящую из тех символов из string в диапазоне от (включая) символа с индексом start до (не включая) символа с индексом end. Первый символ имеет индекс ноль. С одним аргументом эта функция просто копирует string.
(substring "abcdefg" 0 3) ⇒ "abc"В примере выше, индекс ‘a’ равен 0, индекс ‘b’ равен 1, а индекс ‘c’ равен 2. Индекс 3 — четвёртый символ в строке — отмечает позицию символа, до которой копируется подстрока. Таким образом, ‘abc’ копируется из строки
"abcdefg".Отрицательное число считает с конца строки, так что -1 обозначает индекс последнего символа строки. Например:
(substring "abcdefg" -3 -1) ⇒ "ef"В этом примере, индекс ‘e’ равен -3, индекс ‘f’ равен -2, а индекс ‘g’ равен -1. Следовательно, ‘e’ и ‘f’ включены, а ‘g’ исключено.
Когда
nilиспользуется для end, оно обозначает длину строки. Таким образом,(substring "abcdefg" -3 nil) ⇒ "efg"Опускание аргумента end эквивалентно указанию
nil. Следовательно,(substring string 0)возвращает копию всей string.(substring "abcdefg" 0) ⇒ "abcdefg"Но мы рекомендуем
copy-sequenceдля этой цели (см. Функции последовательностей).Если копируемые из string символы имеют свойства текста, эти свойства также копируются в новую строку. См. Свойства текста.
substringтакже принимает вектор в качестве первого аргумента. Например:(substring [a b (c) "d"] 1 3) ⇒ [b (c)]Ошибка
wrong-type-argumentгенерируется, если start не является целым числом или если end не является целым числом илиnil. Ошибкаargs-out-of-rangeгенерируется, если start указывает на символ, следующий за end, или если оба целых числа находятся вне допустимого диапазона для string.Противопоставьте эту функцию
buffer-substring(см. Содержимое буфера), которая возвращает строку, содержащую часть текста в текущем буфере. Начало строки находится на индексе 0, а начало буфера — на индексе 1.
- Функция: substring-no-properties string &optional start end
Работает как
substringно отбрасывает все свойства текста из значения. Кроме того, start можно опустить илиnil, что эквивалентно 0. Таким образом,(substring-no-properties string)возвращает копию string со всеми свойствами текста, удалёнными.
- Функция: concat &rest sequences
-
Эта функция возвращает строку, состоящую из символов в переданных аргументах (вместе со свойствами текста, если таковые имеются). Аргументы могут быть строками, списками чисел или векторами чисел; они сами при этом не изменяются. Если
concatне получает аргументы, она возвращает пустую строку.(concat "abc" "-def") ⇒ "abc-def" (concat "abc" (list 120 121) [122]) ⇒ "abcxyz" ;;nilis an empty sequence. (concat "abc" nil "-def") ⇒ "abc-def" (concat "The " "quick brown " "fox.") ⇒ "The quick brown fox." (concat) ⇒ ""Эта функция не всегда выделяет новую строку. Пользователям рекомендуется не полагаться на то, что результат будет новой строкой, или на то, что он будет
eqсуществующей строке.В частности, изменение возвращаемого значения может непреднамеренно изменить другую строку, изменить константную строку в программе или даже вызвать ошибку. Чтобы получить строку, которую можно безопасно изменить, используйте
copy-sequenceна результате.Для получения информации о других функциях конкатенации см. описание
mapconcatв Функции сопоставления,vconcatв Функции векторов иappendв Создание списков. Для конкатенации отдельных аргументов командной строки в строку, используемую как команда оболочки, см. combine-and-quote-strings.
- Функция: split-string string &optional separators omit-nulls trim
-
Эта функция разбивает string на подстроки на основе регулярного выражения separators (см. Регулярные выражения). Каждое совпадение для separators определяет точку разделения; подстроки между точками разделения объединяются в список, который возвращается.
Если separators равно
nil(или опущено), значение по умолчанию —split-string-default-separators, и функция ведет себя так, как если бы omit-nulls былоt.Если omit-nulls равно
nil(или опущено), результат содержит пустые строки, когда есть два последовательных совпадения для separators или совпадение находится рядом с началом или концом string. Если omit-nulls равноt, эти пустые строки опускаются из результата.Если необязательный аргумент trim имеет ненулевое значение, он должен быть регулярным выражением для сопоставления текста, который следует удалить с начала и конца каждой подстроки. Если обрезка приводит к пустой подстроке, она обрабатывается как пустая.
Если вам нужно разбить строку на список отдельных аргументов командной строки, подходящих для
call-processилиstart-process, см. split-string-and-unquote.Примеры:
(split-string " two words ") ⇒ ("two" "words")Результат не
("" "two" "words" ""), что редко бывает полезным. Если вам нужен такой результат, используйте явное значение для separators:(split-string " two words " split-string-default-separators) ⇒ ("" "two" "words" "")(split-string "Soup is good food" "o") ⇒ ("S" "up is g" "" "d f" "" "d") (split-string "Soup is good food" "o" t) ⇒ ("S" "up is g" "d f" "d") (split-string "Soup is good food" "o+") ⇒ ("S" "up is g" "d f" "d")Пустые совпадения учитываются, за исключением того, что
split-stringне будет искать конечное пустое совпадение, когда оно уже достигло конца строки с помощью ненулевого совпадения или когда string пустая:(split-string "aooob" "o*") ⇒ ("" "a" "" "b" "") (split-string "ooaboo" "o*") ⇒ ("" "" "a" "b" "") (split-string "" "") ⇒ ("")Однако, когда separators может сопоставляться с пустой строкой, omit-nulls обычно равно
t, поэтому тонкости в трех предыдущих примерах редко актуальны:(split-string "Soup is good food" "o*" t) ⇒ ("S" "u" "p" " " "i" "s" " " "g" "d" " " "f" "d") (split-string "Nice doggy!" "" t) ⇒ ("N" "i" "c" "e" " " "d" "o" "g" "g" "y" "!") (split-string "" "" t) ⇒ nilНесколько странное, но предсказуемое поведение может возникнуть для некоторых «нежадных» значений separators, которые могут отдавать предпочтение пустым совпадениям перед ненулевыми совпадениями. Опять же, такие значения редко встречаются на практике:
(split-string "ooo" "o*" t) ⇒ nil (split-string "ooo" "\\|o+" t) ⇒ ("o" "o" "o")
- Переменная: split-string-default-separators
Значение по умолчанию для separators для
split-string. Его обычное значение —"[ \f\t\n\r\v]+".
- Функция: string-clean-whitespace string
Очистка пробелов в string путём сжатия пробелов до одного пробела, а также удаления всех пробелов с начала и конца string.
- Функция: string-trim-left string &optional regexp
Удаление ведущего текста, соответствующего regexp, из string. regexp по умолчанию — ‘[ \t\n\r]+’.
- Функция: string-trim-right string &optional regexp
Удаление заключительного текста, соответствующего regexp, из string. regexp по умолчанию — ‘[ \t\n\r]+’.
- Функция: string-trim string &optional trim-left trim-right
Удаление ведущего текста, соответствующего trim-left, и заключительного текста, соответствующего trim-right, из string. Оба регулярных выражения по умолчанию — ‘[ \t\n\r]+’.
- Функция: string-fill string length
Попытка переноса по словам string, чтобы никакие строки не были длиннее length. Заполнение выполняется только по границам пробелов. Если есть отдельные слова, которые длиннее length, эти слова не будут укорочены.
- Функция: string-limit string length &optional end coding-system
-
Если string короче length символов, string возвращается как есть. В противном случае возвращается подстрока string, состоящая из первых length символов. Если необязательный параметр end задан, возвращается строка из последних length символов вместо этого.
Если coding-system имеет не-
nilзначение, string будет закодирована перед ограничением, и результат будет строкой с одним байтом на символ, которая корочеlengthбайтов. Если string содержит символы, которые кодируются несколькими байтами (например, при использованииutf-8), полученная строка с одним байтом на символ никогда не обрезается посередине представления символа.Эта функция измеряет длину строки в символах или байтах и поэтому, как правило, не подходит, если вам нужно укоротить строки для отображения; используйте
truncate-string-to-widthилиwindow-text-pixel-sizeвместо этого (см. Размер отображаемого текста).
- Функция: string-lines string &optional omit-nulls
Разделить string на список строк по границам новой строки. Если omit-nulls, удалить пустые строки из результатов.
- Функция: string-pad string length &optional padding start
Дополнить string до указанной length с использованием padding в качестве символа заполнения. padding по умолчанию — пробел. Если string длиннее length, заполнение не выполняется. Если start равно
nilили опущено, заполнение добавляется к символам string, а если оно неnil, заполнение добавляется перед символами string.
- Функция: string-chop-newline string
Удалить конечный символ новой строки, если он есть, из string.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Creating-Strings.html