Строка
Строка — это упорядоченная коллекция байтов.
Строки не задают кодировку.
Пример использования некоторых распространенных методов строк:
actor Main
new create(env: Env) =>
try
// construct a new string
let str = "Hello"
// make an uppercased version
let str_upper = str.upper()
// make a reversed version
let str_reversed = str.reverse()
// add " world" to the end of our original string
let str_new = str.add(" world")
// count occurrences of letter "l"
let count = str_new.count("l")
// find first occurrence of letter "w"
let first_w = str_new.find("w")
// find first occurrence of letter "d"
let first_d = str_new.find("d")
// get substring capturing "world"
let substr = str_new.substring(first_w, first_d+1)
// clone substring
let substr_clone = substr.clone()
// print our substr
env.out.print(consume substr)
end
class val String is Seq[U8 val] ref, Comparable[String box] ref, Stringable box
Реализует
- Seq[U8 val] ref
- Comparable[Строка box] ref
- Stringable box
Конструкторы
create
Пустая строка. Зарезервировано достаточно места для len байтов.
new ref create( len: USize val = 0) : String ref^
Параметры
- len: USize val = 0
Возвращает
- Строка ref^
from_array
Создаёт строку из массива, повторно используя указатель на данные.
new val from_array( data: Array[U8 val] val) : String val^
Параметры
Возвращает
- Строка val^
from_iso_array
Создаёт строку из массива, повторно используя указатель на данные
new iso from_iso_array( data: Array[U8 val] iso) : String iso^
Параметры
Возвращает
- Строка iso^
from_cpointer
Возвращает строку из данных двоичного указателя без копирования. Это необходимо только при использовании функций C-FFI, возвращающих массивы символов, выделенные pony_alloc. Если указатель null, возвращается пустая строка.
new ref from_cpointer( str: Pointer[U8 val] ref, len: USize val, alloc: USize val = 0) : String ref^
Параметры
Возвращает
- Строка ref^
from_cstring
Возвращает строку из указателя на строку C с нулевым завершением без копирования. Данные не копируются. Это необходимо только при использовании функций C-FFI, возвращающих массивы символов, выделенные pony_alloc. Указатель сканируется до первого нулевого байта, который будет интерпретирован как нулевой терминатор. Обратите внимание, что сканирование не ограничено; данные, на которые указывает указатель, должны быть завершены нулём в выделенном массиве для сохранения безопасности памяти. Если указатель null, возвращается пустая строка.
new ref from_cstring( str: Pointer[U8 val] ref) : String ref^
Параметры
Возвращает
- Строка ref^
copy_cpointer
Создаёт строку путём копирования фиксированного числа байтов из указателя.
new ref copy_cpointer( str: Pointer[U8 val] box, len: USize val) : String ref^
Параметры
Возвращает
- Строка ref^
copy_cstring
Создаёт строку путём копирования строки C с нулевым завершением. Обратите внимание, что сканирование не ограничено; данные, на которые указывает указатель, должны быть завершены нулём в выделенном массиве для сохранения безопасности памяти. Если указатель null, возвращается пустая строка.
new ref copy_cstring( str: Pointer[U8 val] box) : String ref^
Параметры
Возвращает
- Строка ref^
from_utf32
Создаёт строку UTF-8 из одного кодового пункта UTF-32.
new ref from_utf32( value: U32 val) : String ref^
Параметры
- value: U32 val
Возвращает
- Строка ref^
Публичные функции
push_utf32
Добавляет кодовый пункт UTF-32.
fun ref push_utf32( value: U32 val) : None val
Параметры
- value: U32 val
Возвращает
- None val
cpointer
Возвращает указатель C, совместимый с выделением памяти строки.
fun box cpointer( offset: USize val = 0) : Pointer[U8 val] tag
Параметры
- offset: USize val = 0
Возвращает
cstring
Возвращает указатель C, совместимый с нуль-терминированной версией строки, безопасный для передачи в функцию FFI, которая не принимает аргумент размера, ожидая нулевой терминатор. Если исходная строка уже завершена нулём, возвращается она; в противном случае строка копируется в новую нуль-терминированную выделение.
fun box cstring() : Pointer[U8 val] tag
Возвращает
array
Возвращает массив Array[U8], который повторно использует указатель на данные.
fun val array() : Array[U8 val] val
Возвращает
iso_array
Возвращает массив Array[U8] iso, который повторно использует указатель на данные.
fun iso iso_array() : Array[U8 val] iso^
Возвращает
размер
Возвращает длину данных строки в байтах.
fun box size() : USize val
Возвращает
- USize val
кодовые точки
Возвращает количество кодовых точек Юникода в строке между двумя смещениями. Диапазон индексов [from .. to) — полуоткрытый.
fun box codepoints( from: ISize val = 0, to: ISize val = call) : USize val
Параметры
Возвращает
- USize val
место
Возвращает место, доступное для данных, не включая нулевой терминатор.
fun box space() : USize val
Возвращает
- USize val
reserve
Зарезервировать место для len байтов. Дополнительный байт будет зарезервирован для нулевого терминатора.
fun ref reserve( len: USize val) : None val
Параметры
- len: USize val
Возвращает
- None val
compact
Попытаться освободить неиспользуемое место, сделав его доступным для сборки мусора. Запрос может быть проигнорирован. Строка возвращается для цепочки вызовов.
fun ref compact() : None val
Возвращает
- None val
recalc
Пересчитывает длину строки. Это необходимо только если строка изменена через вызов FFI. Если байт нулевого терминатора не найден в выделенной длине, размер не изменится.
fun ref recalc() : None val
Возвращает
- None val
truncate
Усекает строку до минимума из len и space. Гарантирует наличие нулевого терминатора. Не проверяет нулевые терминаторы внутри строки.
Обратите внимание, что память при этом не освобождается.
fun ref truncate( len: USize val) : None val
Параметры
- len: USize val
Возвращает
- None val
trim_in_place
Усекает строку до части себя, охватывая from до to. В отличие от slice, операция не выделяет новую строку и не копирует элементы.
fun ref trim_in_place( from: USize val = 0, to: USize val = call) : None val
Параметры
Возвращает
- None val
trim
Возвращает общую часть этой строки, охватывающую from до to. И исходная, и новая строка являются неизменяемыми, поскольку они разделяют память. Операция не выделяет новый указатель строки и не копирует элементы.
fun val trim( from: USize val = 0, to: USize val = call) : String val
Параметры
Возвращает
- Строка val
chop
Разрезает строку пополам в указанной точке разбиения и возвращает обе левую и правую части. Исходная строка обрезается на месте и возвращается как левая часть. Если точка разбиения больше, чем длина строки, левая часть — это исходная строка, а правая часть — новая пустая строка. Обе строки изолированы и изменяемы, так как они не используют общую память. Операция не выделяет новый указатель на строку и не копирует элементы.
fun iso chop( split_point: USize val) : (String iso^ , String iso^)
Параметры
- split_point: USize значение
Возвращаемое значение
unchop
Объединяет две изолированные строки, чтобы вернуть исходную строку, из которой они были разделены. Обе входные строки изолированы и изменяемы, и они изначально были разделены из одной строки. Эта функция проверяет, что это действительно две строки, разделенные из одной исходной строки, и что они могут быть объединены, прежде чем выполнять объединение и возвращать объединённую строку. Если две строки не могут быть объединены, она возвращает обе строки без их изменения. Операция не выделяет новый указатель на строку и не копирует элементы.
fun iso unchop( b: String iso) : ((String iso^ , String iso^) | String iso^)
Параметры
- b: Строка iso
Возвращаемое значение
is_null_terminated
Возвращает true, если строка имеет нуль-терминатор и её безопасно передать в функцию FFI, которая не принимает аргумент размера, ожидая нуль-терминатор. Этот метод проверяет, что после последней заполненной позиции в строке есть нулевой байт, но не проверяет наличие других нулевых байтов, которые могут присутствовать ранее в содержимом строки. Если вам нужна скопированная строка с нуль-терминатором, используйте метод clone.
fun box is_null_terminated() : Bool val
Возвращаемое значение
- Булево значение
utf32
Возвращает UTF32 представление символа в заданном смещении и количество байтов, необходимых для кодирования этого символа. Если смещение не указывает на начало корректной UTF8 кодировки, возвращает 0xFFFD (замещающий символ Юникода) и длину 1. Вызывает ошибку, если смещение находится за пределами границ.
fun box utf32( offset: ISize val) : (U32 val , U8 val) ?
Параметры
- offset: ISize значение
Возвращаемое значение
apply
Возвращает i-й байт. Вызывает ошибку, если индекс находится за пределами границ.
fun box apply( i: USize val) : U8 val ?
Параметры
- i: USize значение
Возвращаемое значение
- U8 значение ?
update
Изменяет i-й байт. Вызывает ошибку, если индекс находится за пределами границ.
fun ref update( i: USize val, value: U8 val) : U8 val ?
Параметры
Возвращаемое значение
- U8 значение ?
at_offset
Возвращает байт в заданном смещении. Вызывает ошибку, если смещение находится за пределами границ.
fun box at_offset( offset: ISize val) : U8 val ?
Параметры
- offset: ISize значение
Возвращаемое значение
- U8 значение ?
update_offset
Изменяет байт в строке, возвращая предыдущий байт в этом смещении. Вызывает ошибку, если смещение находится за пределами границ.
fun ref update_offset( offset: ISize val, value: U8 val) : U8 val ?
Параметры
Возвращаемое значение
- U8 значение ?
clone
Возвращает копию строки. Результирующая строка имеет нуль-терминатор, даже если исходная не имеет.
fun box clone() : String iso^
Возвращаемое значение
- Строка iso^
repeat_str
Возвращает копию строки, повторённую num раз с необязательным разделителем между повторениями.
fun box repeat_str( num: USize val = 1, sep: String val = "") : String iso^
Параметры
Возвращаемое значение
- Строка iso^
mul
Возвращает копию строки, повторённую num раз.
fun box mul( num: USize val) : String iso^
Параметры
- num: USize значение
Возвращаемое значение
- Строка iso^
find
Возвращает индекс n-го вхождения s в строке, начиная с начала. Вызывает ошибку, если нет n-го вхождения s или s пустая.
fun box find( s: String box, offset: ISize val = 0, nth: USize val = 0) : ISize val ?
Параметры
Возвращаемое значение
- ISize значение ?
rfind
Возвращает индекс n-го вхождения s в строке, начиная с конца. offset представляет собой максимальный индекс, включённый в поиск. Вызывает ошибку, если нет n-го вхождения s или s пустая.
fun box rfind( s: String box, offset: ISize val = call, nth: USize val = 0) : ISize val ?
Параметры
Возвращаемое значение
- ISize значение ?
contains
Возвращает true, если содержит s в качестве подстроки, иначе false.
fun box contains( s: String box, offset: ISize val = 0, nth: USize val = 0) : Bool val
Параметры
Возвращаемое значение
- Булево значение
count
Подсчитывает количество неперекрывающихся вхождений s в строке.
fun box count( s: String box, offset: ISize val = 0) : USize val
Параметры
Возвращаемое значение
- USize значение
at
Возвращает true, если подстрока s присутствует в заданном смещении.
fun box at( s: String box, offset: ISize val = 0) : Bool val
Параметры
Возвращаемое значение
- Булево значение
delete
Удаляет len байтов в указанном смещении, сжимая строку на месте.
fun ref delete( offset: ISize val, len: USize val = 1) : None val
Параметры
Возвращаемое значение
- None значение
substring
Возвращает подстроку. Диапазон индексов [from .. to) является полуоткрытым. Возвращает пустую строку, если в диапазоне ничего нет.
Обратите внимание, что эта операция выделяет новую строку для возврата. Для аналогичных операций, которые не выделяют новую строку, см. trim и trim_in_place.
fun box substring( from: ISize val, to: ISize val = call) : String iso^
Параметры
Возвращаемое значение
- Строка iso^
lower
Возвращает строку в нижнем регистре.
fun box lower() : String iso^
Возвращаемое значение
- Строка iso^
lower_in_place
Преобразует строку в нижний регистр. В настоящее время поддерживается только ASCII.
fun ref lower_in_place() : None val
Возвращаемое значение
- None значение
upper
Возвращает строку в верхнем регистре. В настоящее время поддерживается только ASCII.
fun box upper() : String iso^
Возвращаемое значение
- Строка iso^
upper_in_place
Преобразует строку в верхний регистр.
fun ref upper_in_place() : None val
Возвращаемое значение
- None значение
reverse
Возвращает перевернутую версию строки.
fun box reverse() : String iso^
Возвращает
- Строка iso^
reverse_in_place
Изменяет порядок байтов в строке. Необходимо изменить для корректной обработки UTF-8.
fun ref reverse_in_place() : None val
Возвращает
- None val
push
Добавляет байт в конец строки.
fun ref push( value: U8 val) : None val
Параметры
- value: U8 val
Возвращает
- None val
pop
Удаляет байт из конца строки.
fun ref pop() : U8 val ?
Возвращает
- U8 val ?
unshift
Добавляет байт в начало строки.
fun ref unshift( value: U8 val) : None val
Параметры
- value: U8 val
Возвращает
- None val
shift
Удаляет байт из начала строки.
fun ref shift() : U8 val ?
Возвращает
- U8 val ?
append
Добавляет элементы из последовательности, начиная с заданного смещения.
fun ref append( seq: ReadSeq[U8 val] box, offset: USize val = 0, len: USize val = call) : None val
Параметры
Возвращает
- None val
concat
Добавляет len итерируемых байтов в конец строки, начиная с заданного смещения.
fun ref concat( iter: Iterator[U8 val] ref, offset: USize val = 0, len: USize val = call) : None val
Параметры
Возвращает
- None val
clear
Усекает строку до нулевой длины.
fun ref clear() : None val
Возвращает
- None val
insert
Возвращает версию строки с данной строкой, вставленной в заданном смещении.
fun box insert( offset: ISize val, that: String val) : String iso^
Параметры
Возвращает
- Строка iso^
insert_in_place
Вставляет заданную строку в заданное смещение. Добавляет строку, если смещение вне границ.
fun ref insert_in_place( offset: ISize val, that: String box) : None val
Параметры
Возвращает
- None val
insert_byte
Вставляет байт в заданное смещение. Добавляет, если смещение вне границ.
fun ref insert_byte( offset: ISize val, value: U8 val) : None val
Параметры
Возвращает
- None val
cut
Возвращает версию строки с удалённым заданным диапазоном. Диапазон индексов [from .. to) полуоткрытый.
fun box cut( from: ISize val, to: ISize val = call) : String iso^
Параметры
Возвращает
- Строка iso^
cut_in_place
Удаляет из строки указанный диапазон. Диапазон индексов [from .. to) полуоткрытый.
fun ref cut_in_place( from: ISize val, to: ISize val = call) : None val
Параметры
Возвращает
- None val
remove
Удаляет все вхождения s из строки. Возвращает количество удаленных вхождений.
fun ref remove( s: String box) : USize val
Параметры
- s: Строка box
Возвращает
- USize val
replace
Заменяет до n вхождений from в this на to. Если n равно 0, будут заменены все вхождения. Возвращает количество заменённых вхождений.
fun ref replace( from: String box, to: String box, n: USize val = 0) : USize val
Параметры
Возвращает
- USize val
split_by
Разбивает строку на массив строк, ограниченных разделителем delim в исходной строке. Если n > 0, то количество разбиений ограничено n.
Пример:
let original: String = "<b><span>Hello!</span></b>"
let delimiter: String = "><"
let split_array: Array[String] = original.split_by(delimiter)
env.out.print("OUTPUT:")
for value in split_array.values() do
env.out.print(value)
end
// OUTPUT:
// <b
// span>Hello!</span
// b>
Смежные разделители приводят к записи нулевой длины в массиве. Например, "1CutCut2".split_by("Cut") => ["1", "", "2"].
Пустой разделитель приводит к массиву, содержащему один элемент, равный всей строке.
Если вы хотите разбить строку на каждый отдельный символ из delim, используйте split.
fun box split_by( delim: String val, n: USize val = call) : Array[String val] iso^
Параметры
Возвращает
split
Разбивает строку на массив строк по любому символу в строке разделителей. По умолчанию, строка разбивается по пробелам. Если n > 0, то количество разбиений ограничено n.
Пример:
let original: String = "name,job;department"
let delimiter: String = ".,;"
let split_array: Array[String] = original.split(delimiter)
env.out.print("OUTPUT:")
for value in split_array.values() do
env.out.print(value)
end
// OUTPUT:
// name
// job
// department
Смежные разделители приводят к записи нулевой длины в массиве. Например, "1,,2".split(",") => ["1", "", "2"].
Если вы хотите разбить строку на всю строку разделителя delim, используйте split_by.
fun box split( delim: String val = " ", n: USize val = 0) : Array[String val] iso^
Параметры
Возвращает
strip
Удаляет все ведущие и завершающие символы из строки, которые находятся в s.
fun ref strip( s: String box = " ") : None val
Параметры
- s: Строка box = " "
Возвращает
- None val
rstrip
Удаляет все завершающие символы в строке, которые находятся в s. По умолчанию, удаляются завершающие пробелы.
fun ref rstrip( s: String box = " ") : None val
Параметры
- s: Строка box = " "
Возвращает
- None val
lstrip
Удаляет все ведущие символы в строке, которые находятся в s. По умолчанию, удаляются ведущие пробелы.
fun ref lstrip( s: String box = " ") : None val
Параметры
- s: Строка box = " "
Возвращает
- None val
add
Возвращает строку, являющуюся конкатенацией этой и that.
fun box add( that: String box) : String val
Параметры
- that: Строка box
Возвращает
- Строка val
join
Возвращает строку, являющуюся конкатенацией строк в data, используя эту строку в качестве разделителя.
fun box join( data: Iterator[Stringable box] ref) : String iso^
Параметры
- data: Iterator[Stringable box] ref
Возвращает
- Строка iso^
compare
Лексическое сравнение двух строк.
fun box compare( that: String box) : (Less val | Equal val | Greater val)
Параметры
- that: Строка box
Возвращает
Лексически сравнивает не более n байтов подстроки this, начиная с позиции offset, с подстрокой that, начиная с позиции that_offset. Сравнение регистрозависимое, если ignore_case равно true.
Если подстрока this является правильным префиксом подстроки that, то this меньше that. Аналогично, если that является правильным префиксом this, то this больше that.
И offset, и that_offset могут быть отрицательными, в этом случае смещения вычисляются от конца строки.
Если n + offset больше длины this, или n + that_offset больше длины that, то количество сравниваемых позиций будет уменьшено до длины самой длинной подстроки.
Необходимо сделать UTF-8 безопасным.
fun box compare_sub( that: String box, n: USize val, offset: ISize val = 0, that_offset: ISize val = 0, ignore_case: Bool val = false) : (Less val | Equal val | Greater val)
Параметры
- that: Строка box
- n: USize val
- offset: ISize val = 0
- that_offset: ISize val = 0
- ignore_case: Bool val = false
Возвращаемое значение
eq
Возвращает true, если две строки имеют одинаковое содержимое.
fun box eq( that: String box) : Bool val
Параметры
- that: Строка box
Возвращаемое значение
- Bool val
lt
Возвращает true, если эта строка лексически меньше, чем that. Необходимо сделать UTF-8 безопасным.
fun box lt( that: String box) : Bool val
Параметры
- that: Строка box
Возвращаемое значение
- Bool val
le
Возвращает true, если эта строка лексически меньше или равна, чем that. Необходимо сделать UTF-8 безопасным.
fun box le( that: String box) : Bool val
Параметры
- that: Строка box
Возвращаемое значение
- Bool val
offset_to_index
fun box offset_to_index( i: ISize val) : USize val
Параметры
- i: ISize val
Возвращаемое значение
- USize val
bool
fun box bool() : Bool val ?
Возвращаемое значение
- Bool val ?
i8
fun box i8( base: U8 val = 0) : I8 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- I8 val ?
i16
fun box i16( base: U8 val = 0) : I16 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- I16 val ?
i32
fun box i32( base: U8 val = 0) : I32 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- I32 val ?
i64
fun box i64( base: U8 val = 0) : I64 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- I64 val ?
i128
fun box i128( base: U8 val = 0) : I128 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- I128 val ?
ilong
fun box ilong( base: U8 val = 0) : ILong val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- ILong val ?
isize
fun box isize( base: U8 val = 0) : ISize val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- ISize val ?
u8
fun box u8( base: U8 val = 0) : U8 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- U8 val ?
u16
fun box u16( base: U8 val = 0) : U16 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- U16 val ?
u32
fun box u32( base: U8 val = 0) : U32 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- U32 val ?
u64
fun box u64( base: U8 val = 0) : U64 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- U64 val ?
u128
fun box u128( base: U8 val = 0) : U128 val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- U128 val ?
ulong
fun box ulong( base: U8 val = 0) : ULong val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- ULong val ?
usize
fun box usize( base: U8 val = 0) : USize val ?
Параметры
- base: U8 val = 0
Возвращаемое значение
- USize val ?
read_int[A: ((I8 val | I16 val | I32 val | I64 val | I128 val | ILong val | ISize val | U8 val | U16 val | U32 val | U64 val | U128 val | ULong val | USize val) & Integer[A] val)]
Считывает целое число из указанной позиции в этой строке. Возвращает значение прочитанного целого числа и количество потребленных байтов. Параметр base определяет используемую систему счисления; 0 означает использование префикса (если он есть) для определения системы счисления (2, 10 или 16). Если в указанной позиции целое число не найдено, возвращается (0, 0), так как ни один символ не был использован. Целое число вне диапазона для целевого типа приводит к ошибке. Разрешен знак минус перед целым числом. Разрешены символы подчеркивания в целом числе и они игнорируются.
fun box read_int[A: ((I8 val | I16 val | I32 val |
I64 val | I128 val | ILong val |
ISize val | U8 val | U16 val |
U32 val | U64 val | U128 val |
ULong val | USize val) & Integer[A] val)](
offset: ISize val = 0,
base: U8 val = 0)
: (A , USize val) ?
Параметры
Возвращаемое значение
- (A , USize val) ?
f32
Преобразует эту строку, начиная с заданного смещения, в 32-битное число с плавающей точкой (F32).
Этот метод возвращает ошибку, если эта строка не может быть преобразована в число с плавающей точкой, если результат выходит за пределы диапазона, смещение превышает размер этой строки или после преобразования в строке остаются неиспользованные символы.
Примеры:
"1.5".f32()? == F32(1.5) "1.19208e-07".f32()? == F32(1.19208e-07) "NaN".f32()?.nan() == true
fun box f32( offset: ISize val = 0) : F32 val ?
Параметры
- offset: ISize val = 0
Возвращаемое значение
- F32 val ?
f64
Преобразует эту строку, начиная с заданного смещения, в 64-битное число с плавающей точкой (F64).
Этот метод возвращает ошибку, если эта строка не может быть преобразована в число с плавающей точкой, если результат выходит за пределы диапазона, смещение превышает размер этой строки или после преобразования в строке остаются неиспользованные символы.
Примеры:
"1.5".f64()? == F64(1.5) "1.19208e-07".f64()? == F64(1.19208e-07) "Inf".f64()?.infinite() == true
fun box f64( offset: ISize val = 0) : F64 val ?
Параметры
- offset: ISize val = 0
Возвращаемое значение
- F64 val ?
hash
fun box hash() : USize val
Возвращает
- USize val
hash64
fun box hash64() : U64 val
Возвращает
- U64 val
string
fun box string() : String iso^
Возвращает
- Строка iso^
значения
Возвращает итератор по байтам в строке.
fun box values() : StringBytes ref^
Возвращает
- StringBytes ref^
runes
Возвращает итератор по кодовым точкам в строке.
fun box runes() : StringRunes ref^
Возвращает
- StringRunes ref^
ge
fun box ge( that: String box) : Bool val
Параметры
- that: Строка box
Возвращает
- Булево val
gt
fun box gt( that: String box) : Bool val
Параметры
- that: Строка box
Возвращает
- Булево val
ne
fun box ne( that: String box) : Bool val
Параметры
- that: Строка box
Возвращает
- Булево val
© 2016-2020, The Pony Developers
© 2014-2015, Causality Ltd.
Licensed under the BSD 2-Clause License.
https://stdlib.ponylang.io/builtin-String