Модуль 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, но функция также получает индекс соответствующего символа.
- С 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 со специальными символами, представленными последовательностями экранирования, следующими лексическим соглашениям 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
Индекс первого вхождения c в s после позиции i.
-
Возбуждает
-
Not_foundеслиcне встречается вsпосле позицииi. -
Invalid_argumentеслиi— не допустимая позиция вs.
-
val index_from_opt : string -> int -> char -> int option
Индекс первого вхождения c в s после позиции i (если есть).
- Since 4.05
-
Возбуждает
Invalid_argumentеслиi— не допустимая позиция вs.
val rindex_from : string -> int -> char -> int
Индекс последнего вхождения c в s перед позицией i+1.
-
Возбуждает
-
Not_foundеслиcне встречается вsперед позициейi+1. -
Invalid_argumentеслиi+1— не допустимая позиция вs.
-
val rindex_from_opt : string -> int -> char -> int option
Индекс последнего вхождения c в s перед позицией i+1 (если есть).
- Since 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.
- Since 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.
- Since 4.05
Строки и последовательности
val to_seq : t -> char Seq.t
to_seq s — последовательность символов строки в порядке возрастания. В режиме "unsafe-string" изменения строки во время итерации будут отражены в последовательности.
- Since 4.07
val to_seqi : t -> (int * char) Seq.t
to_seqi s — как StringLabels.to_seq, но также кортежирует соответствующий индекс.
- Since 4.07
val of_seq : char Seq.t -> t
of_seq s — строка, образованная из символов последовательности.
- Since 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 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.
Бинарное декодирование целых чисел
Функции в этом разделе бинарно декодируют целые числа из строк.
Все следующие функции возбуждают 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.
- Since 4.13.0
val get_int8 : string -> int -> int
get_int8 b i — знаковое 8-битное целое число b , начиная с индекса символа i.
- Since 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 с порядком байтов Big-Endian, начиная с индекса символа i.
- Since 4.13.0
val get_uint16_le : string -> int -> int
get_uint16_le b i — беззнаковое 16-битное целое число b с порядком байтов Little-Endian, начиная с индекса символа 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 с порядком байтов Big-Endian, начиная с индекса символа i.
- Since 4.13.0
val get_int16_le : string -> int -> int
get_int16_le b i — знаковое 16-битное целое число b с порядком байтов Little-Endian, начиная с индекса символа 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 hash : t -> int
Функция хэширования строк без инициализации, с тем же выходным значением, что и Hashtbl.hash. Эта функция позволяет передать этот модуль в качестве аргумента функтору Hashtbl.Make.
- Since 5.0.0
val seeded_hash : int -> t -> int
Функция хэширования строк с инициализацией, с тем же выходным значением, что и Hashtbl.seeded_hash. Эта функция позволяет передать этот модуль в качестве аргумента функтору Hashtbl.MakeSeeded.
- Since 5.0.0
val get_int32_be : string -> int -> int32
get_int32_be b i — 32-битное целое число b с порядком байтов Big-Endian, начиная с индекса символа i.
- Since 4.13.0
val get_int32_le : string -> int -> int32
get_int32_le b i — 32-битное целое число b с порядком байтов Little-Endian, начиная с индекса символа 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-битное целое число в формате big-endian объекта b, начиная с символа с индексом i.
- Since 4.13.0
val get_int64_le : string -> int -> int64
get_int64_le b i — это 64-битное целое число в формате little-endian объекта b, начиная с символа с индексом i.
- Since 4.13.0
© 1995-2022 INRIA.
https://v2.ocaml.org/releases/5.0/htmlman/libref/StdLabels.String.html