Spec-Zone.ru › OCaml 4.14

Модуль 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
Устаревшая. Это устаревший псевдоним для Bytes.create/BytesLabels.create.

create n возвращает новую последовательность байтов длиной n. Последовательность не инициализирована и содержит произвольные байты.

  • Возбуждает Invalid_argument если n < 0 или n > Sys.max_string_length.
val set : bytes -> int -> char -> unit
Устаревшая. Это устаревший псевдоним для Bytes.set/BytesLabels.set.

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
Устаревшая. Это устаревший псевдоним для Bytes.fill/BytesLabels.fill.

fill s ~pos ~len c изменяет последовательность байтов s на месте, заменяя len байтов на c, начиная с pos.

  • Возбуждает Invalid_argument если pos и len не обозначают допустимую подстроку s.
val uppercase : string -> string
Устаревшая. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с переводом всех строчных букв в заглавные, включая знаки диакритики символов ISO Latin-1 (8859-1).

val lowercase : string -> string
Устаревшая. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с переводом всех заглавных букв в строчные, включая знаки диакритики символов ISO Latin-1 (8859-1).

val capitalize : string -> string
Устаревшая. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с первым символом, преобразованным в верхний регистр, используя набор символов ISO Latin-1 (8859-1).

val uncapitalize : string -> string
Устаревшая. Функции, работающие с набором символов Latin-1, устарели.

Возвращает копию аргумента, с первым символом, преобразованным в нижний регистр, используя набор символов 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

Spec-Zone.ru

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