Модуль StdLabels.String
module String: StringLabels
Строки
type t = string
Тип для строк.
val make : int -> char -> string
make n c — это строка длиной n с каждым индексом, содержащим символ c.
-
Возвращает исключение
Invalid_argumentеслиn < 0илиn >Sys.max_string_length.
val init : int -> f:(int -> char) -> string
init n ~f — это строка длиной n с индексом i, содержащим символ f i (вызывается в порядке возрастания индекса).
- С момента 4.02.0
-
Возвращает исключение
Invalid_argumentеслиn < 0илиn >Sys.max_string_length.
val empty : string
Пустая строка.
- С момента 4.13.0
val of_bytes : bytes -> string
Возвращает новую строку, содержащую те же байты, что и заданная последовательность байтов.
- С момента 4.13.0
val to_bytes : string -> bytes
Возвращает новую последовательность байтов, содержащую те же байты, что и заданная строка.
- С момента 4.13.0
val length : string -> int
length s — это длина (количество байтов/символов) s.
val get : string -> int -> char
get s i — это символ с индексом i в s. Это то же самое, что и запись s.[i].
-
Возвращает исключение
Invalid_argumentеслиiне является индексомs.
Конкатенация
Примечание. Бинарный оператор (^) конкатенирует две строки.
val concat : sep:string -> string list -> string
concat ~sep ss конкатенирует список строк ss, вставляя разделительную строку sep между каждой.
-
Возвращает исключение
Invalid_argumentесли результат длиннее, чемSys.max_string_lengthбайтов.
val cat : string -> string -> string
cat s1 s2 конкатенирует s1 и s2 (s1 ^ s2).
- С момента 4.13.0
-
Возвращает исключение
Invalid_argumentесли результат длиннее, чемSys.max_string_lengthбайтов.
Предикаты и сравнения
val equal : t -> t -> bool
equal s0 s1 является true тогда и только тогда, когда s0 и s1 посимвольно равны.
- С момента 4.05.0
val compare : t -> t -> int
compare s0 s1 сортирует s0 и s1 в лексикографическом порядке. compare ведет себя как compare для строк, но может быть более эффективным.
val starts_with : prefix:string -> string -> bool
starts_with ~prefix s является true тогда и только тогда, когда s начинается с prefix.
- С момента 4.13.0
val ends_with : suffix:string -> string -> bool
ends_with ~suffix s является true тогда и только тогда, когда s заканчивается на suffix.
- С момента 4.13.0
val contains_from : string -> int -> char -> bool
contains_from s start c является true тогда и только тогда, когда c появляется в s после позиции start.
-
Возвращает исключение
Invalid_argumentеслиstartне является допустимой позицией вs.
val rcontains_from : string -> int -> char -> bool
rcontains_from s stop c является true тогда и только тогда, когда c появляется в s перед позицией stop+1.
-
Возвращает исключение
Invalid_argumentеслиstop < 0илиstop+1не являются допустимой позицией вs.
val contains : string -> char -> bool
contains s c является String.contains_from s 0 c.
Извлечение подстрок
val sub : string -> pos:int -> len:int -> string
sub s ~pos ~len — это строка длиной len, содержащая подстроку s, которая начинается с позиции pos и имеет длину len.
-
Возвращает исключение
Invalid_argumentеслиposиlenне обозначают допустимую подстрокуs.
val split_on_char : sep:char -> string -> string list
split_on_char ~sep s — это список всех (возможно пустых) подстрок s, ограниченных символом sep.
Результат функции определяется следующими инвариантами:
- Список не пуст.
- Конкатенация его элементов с использованием
sepв качестве разделителя возвращает строку, равную вводу (concat (make 1 sep)).
(split_on_char sep s) = s - Ни одна строка в результате не содержит символ
sep.
- С момента 4.05.0
Преобразование
val map : f:(char -> char) -> string -> string
map f s — это строка, полученная путем применения f ко всем символам s в порядке возрастания.
- С момента 4.00.0
val mapi : f:(int -> char -> char) -> string -> string
mapi ~f s подобно StringLabels.map, но индекс символа также передается в f.
- С момента 4.02.0
val fold_left : f:('a -> char -> 'a) -> init:'a -> string -> 'a
fold_left f x s вычисляет f (... (f (f x s.[0]) s.[1]) ...) s.[n-1], где n — это длина строки s.
- С момента 4.13.0
val fold_right : f:(char -> 'a -> 'a) -> string -> init:'a -> 'a
fold_right f s x вычисляет f s.[0] (f s.[1] ( ... (f s.[n-1] x) ...)), где n — это длина строки s.
- С момента 4.13.0
val for_all : f:(char -> bool) -> string -> bool
for_all p s проверяет, удовлетворяют ли все символы в s предикату p.
- С момента 4.13.0
val exists : f:(char -> bool) -> string -> bool
exists p s проверяет, удовлетворяет ли хотя бы один символ s предикату p.
- С момента 4.13.0
val trim : string -> string
trim s является s без начальных и конечных пробелов. Символы пробелов: ' ', '\x0C' (форма подачи), '\n', '\r', и '\t'.
- С момента 4.00.0
val escaped : string -> string
escaped s является s со специальными символами, представленными последовательностями escape, следуя лексическим соглашениям OCaml.
Все символы за пределами печатаемого диапазона US-ASCII [0x20;0x7E], а также обратная косая черта (0x2F) и двойная кавычка (0x22) экранируются.
Функция Scanf.unescaped является левым обратным элементом escaped, т.е. Scanf.unescaped (escaped s) = s для любой строки s (если escaped s не терпит неудачи).
-
Возвращает исключение
Invalid_argumentесли результат длиннее, чемSys.max_string_lengthбайтов.
val uppercase_ascii : string -> string
uppercase_ascii s является s со всеми строчными буквами, преобразованными в прописные, используя набор символов US-ASCII.
- С момента 4.05.0
val lowercase_ascii : string -> string
lowercase_ascii s является s со всеми прописными буквами, преобразованными в строчные, используя набор символов US-ASCII.
- С момента 4.05.0
val capitalize_ascii : string -> string
capitalize_ascii s является s с первым символом, преобразованным в прописной, используя набор символов US-ASCII.
- С момента 4.05.0
val uncapitalize_ascii : string -> string
uncapitalize_ascii s является s с первым символом, преобразованным в строчный, используя набор символов US-ASCII.
- С момента 4.05.0
Обход
val iter : f:(char -> unit) -> string -> unit
iter ~f s применяет функцию f по очереди ко всем символам s . Это эквивалентно f s.[0]; f s.[1]; ...; f s.[length s - 1]; ().
val iteri : f:(int -> char -> unit) -> string -> unit
iteri подобно StringLabels.iter, но функция также получает соответствующий индекс символа.
- С момента 4.00.0
Поиск
val index_from : string -> int -> char -> int
index_from s i c — это индекс первого вхождения c в s после позиции i.
-
Возбуждает
-
Not_foundеслиcне встречается вsпосле позицииi. -
Invalid_argumentеслиiне является допустимой позицией вs.
-
val index_from_opt : string -> int -> char -> int option
index_from_opt s i c — это индекс первого вхождения c в s после позиции i (если есть).
- С 4.05
-
Возбуждает
Invalid_argumentеслиiне является допустимой позицией вs.
val rindex_from : string -> int -> char -> int
rindex_from s i c — это индекс последнего вхождения c в s перед позицией i+1.
-
Возбуждает
-
Not_foundеслиcне встречается вsперед позициейi+1. -
Invalid_argumentеслиi+1не является допустимой позицией вs.
-
val rindex_from_opt : string -> int -> char -> int option
rindex_from_opt s i c — это индекс последнего вхождения c в s перед позицией i+1 (если есть).
- С 4.05
-
Возбуждает
Invalid_argumentеслиi+1не является допустимой позицией вs.
val index : string -> char -> int
index s c — String.index_from s 0 c.
val index_opt : string -> char -> int option
index_opt s c — String.index_from_opt s 0 c.
- С 4.05
val rindex : string -> char -> int
rindex s c — String.rindex_from s (length s - 1) c.
val rindex_opt : string -> char -> int option
rindex_opt s c — String.rindex_from_opt s (length s - 1) c.
- С 4.05
Строки и последовательности
val to_seq : t -> char Seq.t
to_seq s — последовательность, образованная символами строки в порядке возрастания. В режиме "unsafe-string", изменения строки во время итерации будут отражены в последовательности.
- С 4.07
val to_seqi : t -> (int * char) Seq.t
to_seqi s — аналогично StringLabels.to_seq, но также кортежирует соответствующий индекс.
- С 4.07
val of_seq : char Seq.t -> t
of_seq s — строка, составленная из символов последовательности.
- С 4.07
Декодирование и проверка UTF
UTF-8
val get_utf_8_uchar : t -> int -> Uchar.utf_decode
get_utf_8_uchar b i декодирует символ UTF-8 с индексом i в b.
val is_valid_utf_8 : t -> bool
is_valid_utf_8 b является true тогда и только тогда, когда b содержит допустимые данные UTF-8.
UTF-16BE
val get_utf_16be_uchar : t -> int -> Uchar.utf_decode
get_utf_16be_uchar b i декодирует символ UTF-16BE с индексом i в b.
val is_valid_utf_16be : t -> bool
is_valid_utf_16be b является true тогда и только тогда, когда b содержит допустимые данные UTF-16BE.
UTF-16LE
val get_utf_16le_uchar : t -> int -> Uchar.utf_decode
get_utf_16le_uchar b i декодирует символ UTF-16LE с индексом i в b.
val is_valid_utf_16le : t -> bool
is_valid_utf_16le b является true тогда и только тогда, когда b содержит допустимые данные UTF-16LE.
Функции, устаревшие
val create : int -> bytes
create n возвращает новую последовательность байтов длиной n. Последовательность не инициализирована и содержит произвольные байты.
-
Возбуждает
Invalid_argumentеслиn < 0илиn >Sys.max_string_length.
val set : bytes -> int -> char -> unit
set s n c изменяет последовательность байтов s на месте, заменяя байт с индексом n на c. Вы также можете написать s.[n] <- c вместо set s n c.
-
Возбуждает
Invalid_argumentеслиnне является допустимым индексом вs.
val blit : src:string -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit
blit ~src ~src_pos ~dst ~dst_pos ~len копирует len байтов из строки src, начиная с индекса src_pos, в последовательность байтов dst, начиная с символа номер dst_pos.
-
Возбуждает
Invalid_argumentеслиsrc_posиlenне обозначают допустимый диапазонsrc, или еслиdst_posиlenне обозначают допустимый диапазонdst.
val copy : string -> string
Возвращает копию заданной строки.
val fill : bytes -> pos:int -> len:int -> char -> unit
fill s ~pos ~len c изменяет последовательность байтов s на месте, заменяя len байтов на c, начиная с pos.
-
Возбуждает
Invalid_argumentеслиposиlenне обозначают допустимую подстрокуs.
val uppercase : string -> string
Возвращает копию аргумента, с переводом всех строчных букв в заглавные, включая знаки диакритики символов ISO Latin-1 (8859-1).
val lowercase : string -> string
Возвращает копию аргумента, с переводом всех заглавных букв в строчные, включая знаки диакритики символов ISO Latin-1 (8859-1).
val capitalize : string -> string
Возвращает копию аргумента, с первым символом, преобразованным в верхний регистр, используя набор символов ISO Latin-1 (8859-1).
val uncapitalize : string -> string
Возвращает копию аргумента, с первым символом, преобразованным в нижний регистр, используя набор символов ISO Latin-1 (8859-1).
Бинарное декодирование целых чисел
Функции в этом разделе бинарно декодируют целые числа из строк.
Все следующие функции возбуждают Invalid_argument если символы, необходимые в индексе i для декодирования целого числа, недоступны.
Маленький порядок байтов (соответственно большой порядок байтов) означает, что наименее (соответственно наиболее) значимые байты хранятся первыми. Большой порядок байтов также известен как сетевой порядок байтов. Порядок байтов по умолчанию — либо малый, либо большой, в зависимости от Sys.big_endian.
32-битные и 64-битные целые числа представлены типами int32 и int64, которые могут интерпретироваться как знакомые или беззнаковые числа.
8-битные и 16-битные целые числа представлены типом int, который имеет больше битов, чем бинарное кодирование. Эти дополнительные биты расширяются знаком (или нулём) для функций, которые декодируют 8-битные или 16-битные целые числа и представляют их значениями int.
val get_uint8 : string -> int -> int
get_uint8 b i — беззнаковое 8-битное целое число b начиная с индекса символа i.
- С 4.13.0
val get_int8 : string -> int -> int
get_int8 b i — знаковое 8-битное целое число b начиная с индекса символа i.
- С 4.13.0
val get_uint16_ne : string -> int -> int
get_uint16_ne b i — это собственный порядок байтов беззнаковый 16-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_uint16_be : string -> int -> int
get_uint16_be b i — это большой порядок байтов беззнаковый 16-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_uint16_le : string -> int -> int
get_uint16_le b i — это малый порядок байтов беззнаковый 16-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int16_ne : string -> int -> int
get_int16_ne b i — это собственный порядок байтов знаковое 16-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int16_be : string -> int -> int
get_int16_be b i — это большой порядок байтов знаковое 16-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int16_le : string -> int -> int
get_int16_le b i — это малый порядок байтов знаковое 16-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int32_ne : string -> int -> int32
get_int32_ne b i — это собственный порядок байтов 32-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int32_be : string -> int -> int32
get_int32_be b i — это большой порядок байтов 32-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int32_le : string -> int -> int32
get_int32_le b i — это малый порядок байтов 32-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int64_ne : string -> int -> int64
get_int64_ne b i — это собственный порядок байтов 64-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int64_be : string -> int -> int64
get_int64_be b i — это большой порядок байтов 64-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
val get_int64_le : string -> int -> int64
get_int64_le b i — это малый порядок байтов 64-битный целое число b, начиная с индекса символа i.
- Since 4.13.0
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/4.14/htmlman/libref/StdLabels.String.html