Spec-Zone.ru › OCaml

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API