Модуль 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
-
Возбуждает исключение
Invalid_argumentеслиn < 0илиn >Sys.max_string_length.
val empty : string
Пустая строка.
- С 4.13
val length : string -> int
length s — это длина (количество байтов/символов) s.
val get : string -> int -> char
get s i — это символ с индексом i в s. Это то же самое, что и s.[i].
-
Возбуждает исключение
Invalid_argumentеслиiне является индексомs.
val of_bytes : bytes -> string
Возвращает новую строку, содержащую те же байты, что и заданная последовательность байтов.
- С 4.13
val to_bytes : string -> bytes
Возвращает новую последовательность байтов, содержащую те же байты, что и заданная строка.
- С 4.13
val blit : src:string -> src_pos:int -> dst:bytes -> dst_pos:int -> len:int -> unit
То же самое, что Bytes.blit_string, что следует предпочесть.
Конкатенация
Примечание. Бинарный оператор (^) конкатенирует две строки.
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
-
Возбуждает исключение
Invalid_argumentесли результат длиннее, чемSys.max_string_lengthбайт.
Предикаты и сравнения
val equal : t -> t -> bool
equal s0 s1 является true тогда и только тогда, когда s0 и s1 являются символьно равными.
- С 4.05
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
val ends_with : suffix:string -> string -> bool
ends_with ~suffix s является true тогда и только тогда, когда s оканчивается на suffix.
- С 4.13
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. Если s пусто, результат — одиночный список [""].
Результат функции задается следующими инвариантами:
- Список не пуст.
- Конкатенация его элементов с использованием
sepв качестве разделителя возвращает строку, равную входной строке (concat (make 1 sep)).
(split_on_char sep s) = s - Ни одна строка в результате не содержит символа
sep.
- С 4.05
Преобразование
val map : f:(char -> char) -> string -> string
map f s — это строка, полученная путем применения f ко всем символам s в порядке возрастания.
- С 4.00
val mapi : f:(int -> char -> char) -> string -> string
mapi ~f s подобен StringLabels.map, но индекс символа также передается в f.
- С 4.02
val fold_left : f:('acc -> char -> 'acc) -> init:'acc -> string -> 'acc
fold_left f x s вычисляет f (... (f (f x s.[0]) s.[1]) ...) s.[n-1], где n — длина строки s.
- С 4.13
val fold_right : f:(char -> 'acc -> 'acc) -> string -> init:'acc -> 'acc
fold_right f s x вычисляет f s.[0] (f s.[1] ( ... (f s.[n-1] x) ...)), где n — длина строки s.
- С 4.13
val for_all : f:(char -> bool) -> string -> bool
for_all p s проверяет, удовлетворяют ли все символы в s предикату p.
- С 4.13
val exists : f:(char -> bool) -> string -> bool
exists p s проверяет, удовлетворяет ли хотя бы один символ s предикату p.
- С 4.13
val trim : string -> string
trim s — это s без начальных и конечных пробелов. Символы пробелов: ' ', '\x0C' (форма подачи), '\n', '\r', и '\t'.
- С 4.00
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
val lowercase_ascii : string -> string
lowercase_ascii s — это s со всеми заглавными буквами, преобразованными в строчные, используя набор символов US-ASCII.
- С 4.05
val capitalize_ascii : string -> string
capitalize_ascii s — это s с первым символом, преобразованным в заглавный, используя набор символов US-ASCII.
- С 4.05
val uncapitalize_ascii : string -> string
uncapitalize_ascii s — это s с первым символом, преобразованным в строчный, используя набор символов US-ASCII.
- С 4.05
Проход
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, но функция также получает соответствующий индекс символа.
- Since 4.00
Поиск
val index_from : string -> int -> char -> int
index_from s i c — это индекс первого вхождения c в s после позиции i.
-
Raises
-
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 (если таковое имеется).
- Since 4.05
-
Raises
Invalid_argumentеслиiне является допустимой позицией вs.
val rindex_from : string -> int -> char -> int
rindex_from s i c — это индекс последнего вхождения c в s перед позицией i+1.
-
Raises
-
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 (если таковое имеется).
- Since 4.05
-
Raises
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.
Бинарное декодирование целых чисел
Функции в этом разделе бинарно декодируют целые числа из строк.
Все следующие функции генерируют Invalid_argument, если необходимые символы по индексу i для декодирования целого числа недоступны.
Маленький порядок байтов (соответственно, большой порядок байтов) означает, что наименее (соответственно, наиболее) значащие байты хранятся первыми. Большой порядок байтов также известен как сетевой порядок байтов. Прямой порядок байтов — это либо порядок байтов little-endian, либо big-endian, в зависимости от 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
val get_int8 : string -> int -> int
get_int8 b i — это знаковое 8-битное целое число b, начинающееся с индекса символа i.
- Since 4.13
val get_uint16_ne : string -> int -> int
get_uint16_ne b i — это беззнаковое 16-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_uint16_be : string -> int -> int
get_uint16_be b i — это беззнаковое 16-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_uint16_le : string -> int -> int
get_uint16_le b i — это беззнаковое 16-битное целое число b в порядке байтов little-endian, начинающееся с индекса символа i.
- Since 4.13
val get_int16_ne : string -> int -> int
get_int16_ne b i — это знаковое 16-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_int16_be : string -> int -> int
get_int16_be b i — это знаковое 16-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_int16_le : string -> int -> int
get_int16_le b i — это знаковое 16-битное целое число b в порядке байтов little-endian, начинающееся с индекса символа i.
- Since 4.13
val get_int32_ne : string -> int -> int32
get_int32_ne b i — это 32-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val hash : t -> int
Функция хеширования строк без начального значения, выдающая то же значение, что и Hashtbl.hash. Эта функция позволяет передать этот модуль в качестве аргумента функтору Hashtbl.Make.
- Since 5.0
val seeded_hash : int -> t -> int
Функция хеширования строк с начальным значением, выдающая то же значение, что и Hashtbl.seeded_hash. Эта функция позволяет передать этот модуль в качестве аргумента функтору Hashtbl.MakeSeeded.
- Since 5.0
val get_int32_be : string -> int -> int32
get_int32_be b i — это 32-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_int32_le : string -> int -> int32
get_int32_le b i — это 32-битное целое число b в порядке байтов little-endian, начинающееся с индекса символа i.
- Since 4.13
val get_int64_ne : string -> int -> int64
get_int64_ne b i — это 64-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_int64_be : string -> int -> int64
get_int64_be b i — это 64-битное целое число b в прямом порядке байтов, начинающееся с индекса символа i.
- Since 4.13
val get_int64_le : string -> int -> int64
get_int64_le b i — это 64-битное целое число b в порядке байтов little-endian, начинающееся с индекса символа i.
- Since 4.13
© 1995-2024 INRIA.
https://ocaml.org/manual/5.2/api/StdLabels.String.html