Строки
Core.AbstractCharТип
Тип AbstractChar является супертипом всех реализаций символов в Julia. Символ представляет собой код Юникода, и его можно преобразовать в целое число с помощью функции codepoint для получения числового значения кода символа или построить из этого же целого числа. Эти числовые значения определяют, как символы сравниваются с < и ==, например. Новые типы T <: AbstractChar должны, как минимум, определять метод codepoint(::T) и конструктор T(::UInt32).
Даный подтип AbstractChar может быть способен представлять только подмножество Юникода, в этом случае преобразование из недопустимого значения UInt32 может вызвать ошибку. Напротив, встроенный тип Char представляет собой супермножество Юникода (для бесприбыльной кодировки некорректных потоков байтов), в этом случае преобразование не-Юникод значения в UInt32 вызывает ошибку. Функцию isvalid можно использовать для проверки того, какие коды символов представимы в данном типе AbstractChar.
Внутренне, тип AbstractChar может использовать различные кодировки. Преобразование с помощью codepoint(char) не покажет эту кодировку, потому что она всегда возвращает значение Юникода символа. print(io, c) любого типа c::AbstractChar генерирует кодировку, определяемую io (UTF-8 для всех встроенных типов IO) через преобразование в Char при необходимости.
write(io, c), напротив, может генерировать кодировку, в зависимости от typeof(c), и read(io, typeof(c)) должно читать ту же кодировку, что и write. Новые типы AbstractChar должны предоставить свои собственные реализации write и read.
Core.CharТип
Char(c::Union{Number,AbstractChar})
Char — это 32-битный тип AbstractChar, который является стандартным представлением символов в Julia. Char используется для символьных литералов, таких как 'x', а также является типом элементов String.
Для бесприбыльной кодировки произвольных потоков байтов, хранящихся в String, значение Char может хранить информацию, которую нельзя преобразовать в код Юникода — преобразование такого Char в UInt32 вызовет ошибку. Функция isvalid(c::Char) может использоваться для запроса, представляет ли c допустимый символ Юникода.
Base.codepointФункция
codepoint(c::AbstractChar) -> Integer
Возвращает код Юникода (бесзнаковое целое число), соответствующий символу c (или выбрасывает исключение, если c не представляет допустимый символ). Для Char, это значение типа UInt32, но типы AbstractChar, которые представляют только подмножество Юникода, могут возвращать целое число другого размера (например, UInt8).
Base.lengthМетод
length(s::AbstractString) -> Int length(s::AbstractString, i::Integer, j::Integer) -> Int
Количество символов в строке s с индексами от i до j. Это вычисляется как количество индексов кодовых единиц с i до j, которые являются допустимыми индексами символов. При наличии только одного аргумента строки, это вычисляет количество символов во всей строке. С аргументами i и j это вычисляет количество индексов между i и j включительно, которые являются допустимыми индексами в строке s. В дополнение к значениям в пределах границ, i может принять значение вне границ ncodeunits(s) + 1, а j может принять значение вне границ 0.
См. также: isvalid, ncodeunits, lastindex, thisind, nextind, prevind
Примеры
julia> length("jμΛIα")
5
исходный код
Base.sizeofМетод
sizeof(str::AbstractString)
Размер строки str в байтах. Равен количеству кодовых единиц в str, умноженному на размер одной кодовой единицы в str в байтах.
Примеры
julia> sizeof("")
0
julia> sizeof("∀")
3
исходный код
Base.:*Метод
*(s::Union{AbstractString, AbstractChar}, t::Union{AbstractString, AbstractChar}...) -> AbstractString
Объединить строки и/или символы, создав строку типа String. Это эквивалентно вызову функции string с этими аргументами. Конкатенация встроенных типов строк всегда создаёт значение типа String, но другие типы строк могут выбрать возвращение строки другого типа, как это необходимо.
Примеры
julia> "Hello " * "world" "Hello world" julia> 'j' * "ulia" "julia"исходный код
Base.:^Метод
^(s::Union{AbstractString,AbstractChar}, n::Integer)
Повторить строку или символ n раз. Это также можно записать как repeat(s, n).
См. также: repeat
Примеры
julia> "Test "^3 "Test Test Test "исходный код
Base.stringФункция
string(n::Integer; base::Integer = 10, pad::Integer = 1)
Преобразует целое число n в строку в заданной base, необязательно указав количество цифр для дополнения.
julia> string(5, base = 13, pad = 4) "0005" julia> string(13, base = 5, pad = 4) "0023"исходный код
string(xs...)
Создать строку из любых значений, кроме nothing, с помощью функции print.
string обычно не следует определять напрямую. Вместо этого определите метод print(io::IO, x::MyType). Если string(x) для определённого типа требует высокой эффективности, тогда имеет смысл добавить метод в string и определить print(io::IO, x::MyType) = print(io, string(x)), чтобы гарантировать согласованность функций.
Примеры
julia> string("a", 1, true)
"a1true"
исходный код
Base.repeatМетод
repeat(s::AbstractString, r::Integer)
Повторить строку r раз. Это можно записать как s^r.
См. также: ^
Примеры
julia> repeat("ha", 3)
"hahaha"
исходный код
Base.repeatМетод
repeat(c::AbstractChar, r::Integer) -> String
Повторить символ r раз. Это можно эквивалентно выполнить, вызвав c^r.
Примеры
julia> repeat('A', 3)
"AAA"
исходный код
Base.reprМетод
repr(x; context=nothing)
Создать строку из любого значения, используя функцию show. Не следует добавлять методы к repr; определите метод show вместо этого.
Необязательный ключевой аргумент context может быть установлен в объект IO или IOContext, атрибуты которого используются для потока ввода/вывода, переданного в show.
Обратите внимание, что repr(x) обычно аналогичен тому, как значение x было бы введено в Julia. Также см. repr(MIME("text/plain"), x), чтобы вместо этого вернуть "красиво отформатированную" версию x, предназначенную для человеческого восприятия, эквивалентную отображению в REPL x.
Примеры
julia> repr(1) "1" julia> repr(zeros(3)) "[0.0, 0.0, 0.0]" julia> repr(big(1/3)) "0.333333333333333314829616256247390992939472198486328125" julia> repr(big(1/3), context=:compact => true) "0.333333"исходный код
Core.StringМетод
String(s::AbstractString)
Преобразует строку в непрерывный массив байтов, закодированный как UTF-8 байты. Такое представление часто подходит для передачи строк в C.
исходный код
Base.SubStringТип
SubString(s::AbstractString, i::Integer, j::Integer=lastindex(s))
SubString(s::AbstractString, r::UnitRange{<:Integer})
Аналогично getindex, но возвращает представление исходной строки s в заданном диапазоне i:j или r соответственно, вместо создания копии.
Примеры
julia> SubString("abc", 1, 2)
"ab"
julia> SubString("abc", 1:2)
"ab"
julia> SubString("abc", 2)
"bc"
исходный код
Base.transcodeФункция
transcode(T, src)
Преобразует данные строки между кодировками Юникода. src — это либо String, либо Vector{UIntXX} единиц кода UTF-XX, где XX равно 8, 16 или 32. T указывает кодировку возвращаемого значения: String для возврата (закодированной в UTF-8) String, или UIntXX для возврата Vector{UIntXX} данных UTF-XX. (Псевдоним Cwchar_t также может быть использован как тип целого числа для преобразования строк wchar_t*, используемых внешними библиотеками C.)
Функция transcode выполняется успешно, пока входные данные могут быть разумно представлены в целевой кодировке; она всегда выполняется успешно для преобразований между кодировками UTF-XX, даже для некорректных данных Юникода.
В настоящее время поддерживается только преобразование в/из UTF-8.
исходный код
Base.unsafe_stringФункция
unsafe_string(p::Ptr{UInt8}, [length::Integer])
Копирует строку из адреса строки C-стиля (завершённой символом NULL), закодированной как UTF-8. (Указатель можно безопасно освободить после этого.) Если length указано (длина данных в байтах), строка не должна быть завершена символом NULL.
Эта функция помечена как «небезопасная», потому что она аварийно завершится, если p не является допустимым адрес памяти для данных требуемой длины.
Base.ncodeunitsМетод
ncodeunits(s::AbstractString) -> Int
Возвращает количество единиц кода в строке. Индексы, которые находятся в границах для доступа к этой строке, должны удовлетворять 1 ≤ i ≤ ncodeunits(s). Не все такие индексы являются допустимыми — они могут не быть началом символа, но они вернут значение единицы кода при вызове codeunit(s,i).
Примеры
julia> ncodeunits("The Julia Language")
18
julia> ncodeunits("∫eˣ")
6
julia> ncodeunits('∫'), ncodeunits('e'), ncodeunits('ˣ')
(3, 1, 2)
См. также: codeunit, checkbounds, sizeof, length, lastindex
Base.codeunitФункция
codeunit(s::AbstractString) -> Type{<:Union{UInt8, UInt16, UInt32}}
Возвращает тип единицы кода данного объекта строки. Для строк, закодированных в ASCII, Latin-1 или UTF-8, это будет UInt8; для UCS-2 и UTF-16 — UInt16; для UTF-32 — UInt32. Тип единицы кода не обязательно должен ограничиваться этими тремя типами, но трудно представить широко используемые кодировки строк, которые не используют одну из этих единиц. codeunit(s) равно typeof(codeunit(s,1)), когда s — это непустая строка.
См. также: ncodeunits
codeunit(s::AbstractString, i::Integer) -> Union{UInt8, UInt16, UInt32}
Возвращает значение единицы кода в строке s по индексу i. Обратите внимание, что
codeunit(s, i) :: codeunit(s)
То есть, возвращаемое значение codeunit(s, i) имеет тип, возвращаемый codeunit(s).
Примеры
julia> a = codeunit("Hello", 2)
0x65
julia> typeof(a)
UInt8
См. также: ncodeunits, checkbounds
Base.codeunitsФункция
codeunits(s::AbstractString)
Получение объекта, подобного вектору, содержащего единицы кода строки. По умолчанию возвращает CodeUnits обёртку, но codeunits может быть определён для новых типов строк при необходимости.
Примеры
julia> codeunits("Juλia")
6-element Base.CodeUnits{UInt8,String}:
0x4a
0x75
0xce
0xbb
0x69
0x61
исходный код
Base.asciiФункция
ascii(s::AbstractString)
Преобразует строку в тип String и проверяет, что она содержит только данные ASCII, в противном случае выбрасывает ArgumentError, указывающий позицию первого не-ASCII байта.
Примеры
julia> ascii("abcdeγfgh")
ERROR: ArgumentError: invalid ASCII at index 6 in "abcdeγfgh"
Stacktrace:
[...]
julia> ascii("abcdefgh")
"abcdefgh"
исходный код
Base.@r_strМакрос
@r_str -> Regex
Создаёт регулярное выражение, например, r"^[a-z]*$", без интерполяции и декодирования (за исключением кавычек ", которые всё ещё нужно экранировать). Регулярное выражение также принимает один или несколько флагов, перечисленных после закрывающей кавычки, чтобы изменить его поведение:
-
iвключает нечувствительность к регистру -
mобрабатывает токены^и$как сопоставление начала и конца отдельных строк, а не всей строки. -
sпозволяет модификатору.соответствовать символам новой строки. -
xвключает "режим комментариев": пробелы разрешены, за исключением случаев, когда они экранированы\, а#рассматривается как начало комментария. -
aотключает режимUCP(включает режим ASCII). По умолчанию\B,\b,\D,\d,\S,\s,\W,\wи т. д. сопоставляются на основе свойств символов Юникода. С этим параметром эти последовательности соответствуют только символам ASCII.
См. Regex, если требуется интерполяция.
Примеры
julia> match(r"a+.*b+.*?d$"ism, "Goodbye,\nOh, angry,\nBad world\n")
RegexMatch("angry,\nBad world")
Это регулярное выражение включает первые три флага.
исходный код
Base.SubstitutionStringТип
SubstitutionString(substr)
Хранит заданную строку substr как SubstitutionString, для использования в подстановках регулярных выражений. Чаще всего создаётся с помощью макроса @s_str.
julia> SubstitutionString("Hello \\g<name>, it's \\1")
s"Hello \\g<name>, it's \\1"
julia> subst = s"Hello \g<name>, it's \1"
s"Hello \\g<name>, it's \\1"
julia> typeof(subst)
SubstitutionString{String}
исходный код
Base.@s_strМакрос
@s_str -> SubstitutionString
Создаёт строку подстановки, используемую для подстановок в регулярных выражениях. Внутри строки последовательности вида \N ссылаются на N-ю группу захвата в регулярном выражении, а \g<groupname> ссылается на именованную группу захвата с именем groupname.
julia> msg = "#Hello# from Julia"; julia> replace(msg, r"#(.+)# from (?<from>\w+)" => s"FROM: \g<from>; MESSAGE: \1") "FROM: Julia; MESSAGE: Hello"исходный код
Base.@raw_strМакрос
@raw_str -> String
Создаёт сырую строку без интерполяции и декодирования. Исключение составляют кавычки, которые всё ещё необходимо экранировать. Обратные слэши экранируют как кавычки, так и другие обратные слэши, но только когда последовательность обратных слэшей предшествует символу кавычки. Таким образом, 2n обратных слэшей, за которыми следует кавычка, кодирует n обратных слэшей и конец литерала, в то время как 2n+1 обратных слэшей, за которыми следует кавычка, кодирует n обратных слэшей, за которыми следует символ кавычки.
Примеры
julia> println(raw"\ $x") \ $x julia> println(raw"\"") " julia> println(raw"\\\"") \" julia> println(raw"\\x \\\"") \\x \"исходный код
Base.@b_strМакрос
@b_str
Создаёт неизменяемый вектор байтов (UInt8) с использованием синтаксиса строк.
Примеры
julia> v = b"12\x01\x02"
4-element Base.CodeUnits{UInt8,String}:
0x31
0x32
0x01
0x02
julia> v[2]
0x32
исходный код
Base.Docs.@html_strМакрос
@html_str -> Docs.HTML
Создаёт объект HTML из литеральной строки.
Base.Docs.@text_strМакрос
@text_str -> Docs.Text
Создайте объект Text из литеральной строки.
Base.isvalidМетод
isvalid(value) -> Bool
Возвращает true, если данное значение является допустимым для своего типа, который в настоящее время может быть AbstractChar или String или SubString{String}.
Примеры
julia> isvalid(Char(0xd800)) false julia> isvalid(SubString(String(UInt8[0xfe,0x80,0x80,0x80,0x80,0x80]),1,2)) false julia> isvalid(Char(0xd799)) trueисходный код
Base.isvalidМетод
isvalid(T, value) -> Bool
Возвращает true, если данное значение является допустимым для этого типа. Типы в настоящее время могут быть AbstractChar или String. Значения для AbstractChar могут быть типа AbstractChar или UInt32. Значения для String могут быть этого типа, или Vector{UInt8} или SubString{String}.
Примеры
julia> isvalid(Char, 0xd800)
false
julia> isvalid(String, SubString("thisisvalid",1,5))
true
julia> isvalid(Char, 0xd799)
true
исходный код
Base.isvalidМетод
isvalid(s::AbstractString, i::Integer) -> Bool
Предикат, указывающий, является ли данный индекс началом кодирования символа в s или нет. Если isvalid(s, i) истинно, то s[i] вернёт символ, кодирование которого начинается с этого индекса, если ложно, то s[i] вызовет ошибку недопустимого индекса или ошибку границ, в зависимости от того, i находится в пределах границ. Для того, чтобы isvalid(s, i) была функцией O(1), кодирование s должно быть самосинхронизирующимся, это основное предположение для поддержки строковых данных в Julia.
См. также: getindex, iterate, thisind, nextind, prevind, length
Примеры
julia> str = "αβγdef";
julia> isvalid(str, 1)
true
julia> str[1]
'α': Unicode U+03B1 (category Ll: Letter, lowercase)
julia> isvalid(str, 2)
false
julia> str[2]
ERROR: StringIndexError("αβγdef", 2)
Stacktrace:
[...]
исходный код
Base.matchФункция
match(r::Regex, s::AbstractString[, idx::Integer[, addopts]])
Поиск первого совпадения регулярного выражения r в s и возвращение объекта RegexMatch, содержащего совпадение, или ничего, если совпадение не найдено. Совпадающая подстрока может быть получена, обратившись к m.match, а захваченные последовательности могут быть получены, обратившись к m.captures. Необязательный аргумент idx указывает индекс, с которого следует начать поиск.
Примеры
julia> rx = r"a(.)a"
r"a(.)a"
julia> m = match(rx, "cabac")
RegexMatch("aba", 1="b")
julia> m.captures
1-element Array{Union{Nothing, SubString{String}},1}:
"b"
julia> m.match
"aba"
julia> match(rx, "cabac", 3) === nothing
true
исходный код
Base.eachmatchФункция
eachmatch(r::Regex, s::AbstractString; overlap::Bool=false)
Поиск всех совпадений регулярного выражения r в s и возвращение итератора по совпадениям. Если перекрытие true, то совпадающие последовательности разрешается перекрывать индексы в исходной строке, в противном случае они должны быть из различных диапазонов символов.
Примеры
julia> rx = r"a.a"
r"a.a"
julia> m = eachmatch(rx, "a1a2a3a")
Base.RegexMatchIterator(r"a.a", "a1a2a3a", false)
julia> collect(m)
2-element Array{RegexMatch,1}:
RegexMatch("a1a")
RegexMatch("a3a")
julia> collect(eachmatch(rx, "a1a2a3a", overlap = true))
3-element Array{RegexMatch,1}:
RegexMatch("a1a")
RegexMatch("a2a")
RegexMatch("a3a")
исходный код
Base.islessМетод
isless(a::AbstractString, b::AbstractString) -> Bool
Проверить, находится ли строка a перед строкой b в алфавитном порядке (технически, в лексикографическом порядке по кодам Unicode).
Примеры
julia> isless("a", "b")
true
julia> isless("β", "α")
false
julia> isless("a", "a")
false
исходный код
Base.:==Метод
==(a::AbstractString, b::AbstractString) -> Bool
Проверить, равны ли две строки, символ за символом (технически, код Unicode за кодом Unicode).
Примеры
julia> "abc" == "abc" true julia> "abc" == "αβγ" falseисходный код
Base.cmpМетод
cmp(a::AbstractString, b::AbstractString) -> Int
Сравнить две строки. Возвращает 0 если обе строки имеют одинаковую длину и символ в каждом индексе одинаков в обеих строках. Возвращает -1 если a является префиксом b, или если a стоит перед b в алфавитном порядке. Возвращает 1 если b является префиксом a, или если b стоит перед a в алфавитном порядке (технически, в лексикографическом порядке по кодам Unicode).
Примеры
julia> cmp("abc", "abc")
0
julia> cmp("ab", "abc")
-1
julia> cmp("abc", "ab")
1
julia> cmp("ab", "ac")
-1
julia> cmp("ac", "ab")
1
julia> cmp("α", "a")
1
julia> cmp("b", "β")
-1
исходный код
Base.lpadФункция
lpad(s, n::Integer, p::Union{AbstractChar,AbstractString}=' ') -> String
Преобразовать s в строку и дополнить её слева символом p до длины n символов (кодов). Если s уже имеет длину n символов, возвращается такая же строка. По умолчанию дополняется пробелами.
Примеры
julia> lpad("March", 10)
" March"
исходный код
Base.rpadФункция
rpad(s, n::Integer, p::Union{AbstractChar,AbstractString}=' ') -> String
Преобразовать s в строку и дополнить её справа символом p до длины n символов (кодов). Если s уже имеет длину n символов, возвращается такая же строка. По умолчанию дополняется пробелами.
Примеры
julia> rpad("March", 20)
"March "
исходный код
Base.findfirstМетод
findfirst(pattern::AbstractString, string::AbstractString) findfirst(pattern::Regex, string::String)
Найти первое вхождение pattern в string. Эквивалентно findnext(pattern, string, firstindex(s)).
Примеры
julia> findfirst("z", "Hello to the world") # returns nothing, but not printed in the REPL
julia> findfirst("Julia", "JuliaLang")
1:5
исходный код
Base.findnextМетод
findnext(pattern::AbstractString, string::AbstractString, start::Integer) findnext(pattern::Regex, string::String, start::Integer)
Найти следующее вхождение pattern в string, начиная с позиции start. pattern может быть либо строкой, либо регулярным выражением, в этом случае string должен быть типа String.
Результат — диапазон индексов, где найдена совпадающая последовательность, такая что s[findnext(x, s, i)] == x:
findnext("substring", string, i) == start:stop таким образом, что string[start:stop] == "substring" и i <= start, или nothing если совпадение не найдено.
Примеры
julia> findnext("z", "Hello to the world", 1) === nothing
true
julia> findnext("o", "Hello to the world", 6)
8:8
julia> findnext("Lang", "JuliaLang", 2)
6:9
исходный код
Base.findnextМетод
findnext(ch::AbstractChar, string::AbstractString, start::Integer)
Найти следующее вхождение символа ch в string, начиная с позиции start.
Этот метод требует как минимум Julia 1.3.
Примеры
julia> findnext('z', "Hello to the world", 1) === nothing
true
julia> findnext('o', "Hello to the world", 6)
8
исходный код
Base.findlastМетод
findlast(pattern::AbstractString, string::AbstractString)
Найти последнее вхождение pattern в string. Эквивалентно findprev(pattern, string, lastindex(string)).
Примеры
julia> findlast("o", "Hello to the world")
15:15
julia> findfirst("Julia", "JuliaLang")
1:5
исходный код
Base.findlastМетод
findlast(ch::AbstractChar, string::AbstractString)
Найти последнее вхождение символа ch в string.
Этот метод требует как минимум Julia 1.3.
Примеры
julia> findlast('p', "happy")
4
julia> findlast('z', "happy") === nothing
true
исходный код
Base.findprevМетод
findprev(pattern::AbstractString, string::AbstractString, start::Integer)
Найти предыдущее вхождение pattern в string, начиная с позиции start.
Значение возврата — диапазон индексов, где найдено соответствующее последовательность, такой что s[findprev(x, s, i)] == x:
findprev("substring", string, i) == start:stop такое что string[start:stop] == "substring" и stop <= i, или nothing если не найдено совпадения.
Примеры
julia> findprev("z", "Hello to the world", 18) === nothing
true
julia> findprev("o", "Hello to the world", 18)
15:15
julia> findprev("Julia", "JuliaLang", 6)
1:5
исходный код
Base.occursinФункция
occursin(needle::Union{AbstractString,Regex,AbstractChar}, haystack::AbstractString)
Определить, является ли первый аргумент подстрокой второго. Если needle является регулярным выражением, проверяет, содержит ли haystack совпадение.
Примеры
julia> occursin("Julia", "JuliaLang is pretty cool!")
true
julia> occursin('a', "JuliaLang is pretty cool!")
true
julia> occursin(r"a.a", "aba")
true
julia> occursin(r"a.a", "abba")
false
См. также: contains.
Base.reverseМетод
reverse(s::AbstractString) -> AbstractString
Инвертирует строку. Технически эта функция инвертирует кодпойнты в строке, и её основное применение — для обработки строк в обратном порядке, особенно для обратных поисков по регулярным выражениям. См. также reverseind для преобразования индексов в s в индексы в reverse(s) и наоборот, и graphemes из модуля Unicode для работы с видимыми пользователю «символами» (графемы) вместо кодпойнтов. См. также Iterators.reverse для итерации в обратном порядке без создания копии. Пользовательские типы строк должны реализовывать функцию reverse самостоятельно и обычно должны возвращать строку с тем же типом и кодировкой. Если они возвращают строку с другой кодировкой, они также должны переопределять reverseind для этого типа строк, чтобы удовлетворить s[reverseind(s,i)] == reverse(s)[i].
Примеры
julia> reverse("JuliaLang")
"gnaLailuJ"
julia> reverse("ax̂e") # combining characters can lead to surprising results
"êxa"
julia> using Unicode
julia> join(reverse(collect(graphemes("ax̂e")))) # reverses graphemes
"ex̂a"
исходный код
Base.replaceМетод
replace(s::AbstractString, pat=>r; [count::Integer])
Ищет заданный шаблон pat в s, и заменяет каждое вхождение на r. Если count указано, заменить не более count вхождений. pat может быть одиночным символом, вектором или набором символов, строкой или регулярным выражением. Если r является функцией, каждое вхождение заменяется на r(s) где s — совпавшая подстрока (когда pat является Regex или AbstractString) или символ (когда pat является AbstractChar или набором AbstractChar). Если pat является регулярным выражением, и r — SubstitutionString, тогда ссылки на группы захвата в r заменяются соответствующим совпадающим текстом. Чтобы удалить вхождения pat из string, установите r в пустую String ("").
Примеры
julia> replace("Python is a programming language.", "Python" => "Julia")
"Julia is a programming language."
julia> replace("The quick foxes run quickly.", "quick" => "slow", count=1)
"The slow foxes run quickly."
julia> replace("The quick foxes run quickly.", "quick" => "", count=1)
"The foxes run quickly."
julia> replace("The quick foxes run quickly.", r"fox(es)?" => s"bus\1")
"The quick buses run quickly."
исходный код
Base.splitФункция
split(str::AbstractString, dlm; limit::Integer=0, keepempty::Bool=true) split(str::AbstractString; limit::Integer=0, keepempty::Bool=false)
Разделить str на массив подстрок по вхождениям разделителя(ей) dlm. dlm может быть в любом формате, разрешенном для первого аргумента findnext (т.е. как строка, регулярное выражение или функция), или как одиночный символ или набор символов.
Если dlm опущено, по умолчанию используется isspace.
Дополнительные ключевые аргументы:
-
limit: максимальный размер результата.limit=0означает отсутствие ограничения (по умолчанию) -
keepempty: сохранить ли пустые поля в результате. По умолчаниюfalseбез аргументаdlm,trueс аргументомdlm.
См. также rsplit.
Примеры
julia> a = "Ma.rch"
"Ma.rch"
julia> split(a, ".")
2-element Array{SubString{String},1}:
"Ma"
"rch"
исходный код
Base.rsplitФункция
rsplit(s::AbstractString; limit::Integer=0, keepempty::Bool=false) rsplit(s::AbstractString, chars; limit::Integer=0, keepempty::Bool=true)
Аналогично split, но начиная с конца строки.
Примеры
julia> a = "M.a.r.c.h"
"M.a.r.c.h"
julia> rsplit(a, ".")
5-element Array{SubString{String},1}:
"M"
"a"
"r"
"c"
"h"
julia> rsplit(a, "."; limit=1)
1-element Array{SubString{String},1}:
"M.a.r.c.h"
julia> rsplit(a, "."; limit=2)
2-element Array{SubString{String},1}:
"M.a.r.c"
"h"
исходный код
Base.stripФункция
strip([pred=isspace,] str::AbstractString) -> SubString strip(str::AbstractString, chars) -> SubString
Удалить ведущие и хвостовые символы из str, либо те, что указаны в chars, либо те, для которых функция pred возвращает true.
По умолчанию удаляются ведущие и хвостовые пробелы и разделители: см. isspace для подробностей.
Дополнительный аргумент chars определяет, какие символы удалять: это может быть один символ, вектор или набор символов.
Метод, принимающий предикатную функцию, требует Julia 1.2 или более поздней версии.
Примеры
julia> strip("{3, 5}\n", ['{', '}', '\n'])
"3, 5"
исходный код
Base.lstripФункция
lstrip([pred=isspace,] str::AbstractString) -> SubString lstrip(str::AbstractString, chars) -> SubString
Удалить ведущие символы из str, либо те, что указаны в chars, либо те, для которых функция pred возвращает true.
По умолчанию удаляются ведущие пробелы и разделители: см. isspace для подробностей.
Дополнительный аргумент chars определяет, какие символы удалять: это может быть одиночный символ или вектор или множество символов.
Примеры
julia> a = lpad("March", 20)
" March"
julia> lstrip(a)
"March"
исходный код
Base.rstripФункция
rstrip([pred=isspace,] str::AbstractString) -> SubString rstrip(str::AbstractString, chars) -> SubString
Удалить хвостовые символы из str, либо те, что указаны в chars, либо те, для которых функция pred возвращает true.
По умолчанию удаляются хвостовые пробелы и разделители: см. isspace для подробностей.
Дополнительный аргумент chars определяет, какие символы удалять: это может быть одиночный символ или вектор или множество символов.
Примеры
julia> a = rpad("March", 20)
"March "
julia> rstrip(a)
"March"
исходный код
Base.startswithФункция
startswith(s::AbstractString, prefix::AbstractString)
Возвратить true если s начинается с prefix. Если prefix является вектором или набором символов, проверить, принадлежит ли первый символ s этому набору.
См. также endswith.
Примеры
julia> startswith("JuliaLang", "Julia")
true
исходный кодstartswith(prefix)
Создать функцию, которая проверяет, начинается ли её аргумент с prefix, т.е. функция, эквивалентная y -> startswith(y, prefix).
Возвращаемая функция имеет тип Base.Fix2{typeof(startswith)}, который может использоваться для реализации специализированных методов.
Аргумент startswith(prefix) с одним аргументом требует как минимум Julia 1.5.
startswith(s::AbstractString, prefix::Regex)
Возвратить true если s начинается с шаблона регулярного выражения prefix.
startswith не компилирует якорь в регулярное выражение, а вместо этого передаёт якорь как match_option в PCRE. Если время компиляции амортизируется, occursin(r"^...", s) быстрее, чем startswith(s, r"...").
См. также occursin и endswith.
Этот метод требует как минимум Julia 1.2.
Примеры
julia> startswith("JuliaLang", r"Julia|Romeo")
true
исходный код
Base.endswithФункция
endswith(s::AbstractString, suffix::AbstractString)
Возвращает true если s оканчивается на suffix. Если suffix является вектором или множеством символов, проверяется, принадлежит ли последний символ s этому множеству.
См. также startswith.
Примеры
julia> endswith("Sunday", "day")
true
исходный кодendswith(suffix)
Создает функцию, проверяющую, заканчивается ли её аргумент на suffix, то есть функцию, эквивалентную y -> endswith(y, suffix).
Возвращаемая функция имеет тип Base.Fix2{typeof(endswith)}, что позволяет реализовать специализированные методы.
Для аргумента endswith(suffix) требуется версия Julia не ниже 1.5.
endswith(s::AbstractString, suffix::Regex)
Возвращает true если s оканчивается на шаблон регулярного выражения suffix.
endswith не компилирует привязки в регулярное выражение, а вместо этого передает привязку как match_option в PCRE. Если время компиляции амортизировано, occursin(r"...$", s) быстрее, чем endswith(s, r"...").
См. также occursin и startswith.
Этот метод требует версии Julia не ниже 1.2.
Примеры
julia> endswith("JuliaLang", r"Lang|Roberts")
true
исходный код
Base.containsФункция
contains(haystack::AbstractString, needle)
Возвращает true если haystack содержит needle. Это то же самое, что и occursin(needle, haystack), но добавлено для согласованности с startswith(haystack, needle) и endswith(haystack, needle).
Примеры
julia> contains("JuliaLang is pretty cool!", "Julia")
true
julia> contains("JuliaLang is pretty cool!", 'a')
true
julia> contains("aba", r"a.a")
true
julia> contains("abba", r"a.a")
false
Функция contains требует версии Julia не ниже 1.5.
contains(needle)
Создает функцию, проверяющую, содержит ли её аргумент needle, то есть функцию, эквивалентную haystack -> contains(haystack, needle).
Возвращаемая функция имеет тип Base.Fix2{typeof(contains)}, что позволяет реализовать специализированные методы.
Base.firstМетод
first(s::AbstractString, n::Integer)
Возвращает подстроку, состоящую из первых n символов s.
Примеры
julia> first("∀ϵ≠0: ϵ²>0", 0)
""
julia> first("∀ϵ≠0: ϵ²>0", 1)
"∀"
julia> first("∀ϵ≠0: ϵ²>0", 3)
"∀ϵ≠"
исходный код
Base.lastМетод
last(s::AbstractString, n::Integer)
Возвращает подстроку, состоящую из последних n символов s.
Примеры
julia> last("∀ϵ≠0: ϵ²>0", 0)
""
julia> last("∀ϵ≠0: ϵ²>0", 1)
"0"
julia> last("∀ϵ≠0: ϵ²>0", 3)
"²>0"
исходный код
Base.Unicode.uppercaseФункция
uppercase(s::AbstractString)
Возвращает s с преобразованием всех символов в верхний регистр.
Примеры
julia> uppercase("Julia")
"JULIA"
исходный код
Base.Unicode.lowercaseФункция
lowercase(s::AbstractString)
Возвращает s с преобразованием всех символов в нижний регистр.
Примеры
julia> lowercase("STRINGS AND THINGS")
"strings and things"
исходный код
Base.Unicode.titlecaseФункция
titlecase(s::AbstractString; [wordsep::Function], strict::Bool=true) -> String
Преобразует в верхний регистр первый символ каждого слова в s; если strict равно true, остальные символы преобразуются в нижний регистр, иначе остаются без изменений. По умолчанию все символы, не являющиеся буквами, считаются разделителями слов; предикат, переданный в качестве ключевого слова wordsep, позволяет определить, какие символы следует считать разделителями слов. См. также uppercasefirst для преобразования только первого символа в s в верхний регистр.
Примеры
julia> titlecase("the JULIA programming language")
"The Julia Programming Language"
julia> titlecase("ISS - international space station", strict=false)
"ISS - International Space Station"
julia> titlecase("a-a b-b", wordsep = c->c==' ')
"A-a B-b"
исходный код
Base.Unicode.uppercasefirstФункция
uppercasefirst(s::AbstractString) -> String
Возвращает s с преобразованием первого символа в верхний регистр (технически "заглавный регистр" для Unicode). См. также titlecase для преобразования первого символа каждого слова в s в верхний регистр.
См. также: lowercasefirst, uppercase, lowercase, titlecase
Примеры
julia> uppercasefirst("python")
"Python"
исходный код
Base.Unicode.lowercasefirstФункция
lowercasefirst(s::AbstractString)
Возвращает s с преобразованием первого символа в нижний регистр.
См. также: uppercasefirst, uppercase, lowercase, titlecase
Примеры
julia> lowercasefirst("Julia")
"julia"
исходный код
Base.joinФункция
join([io::IO,] strings [, delim [, last]])
Объединяет массив strings в одну строку, вставляя заданный разделитель (если он есть) между смежными строками. Если io задано, оно будет использоваться вместо delim между последними двумя строками. Если io задано, результат записывается в io, а не возвращается как String.
strings может быть любым итерируемым объектом над элементами x, которые могут быть преобразованы в строки с помощью print(io::IOBuffer, x). strings будет напечатано в io.
Примеры
julia> join(["apples", "bananas", "pineapples"], ", ", " and ") "apples, bananas and pineapples" julia> join([1,2,3,4,5]) "12345"исходный код
Base.chopФункция
chop(s::AbstractString; head::Integer = 0, tail::Integer = 1)
Удаляет первые head и последние tail символы из s.
Вызов chop(s) удаляет последний символ из s.
Если требуется удалить больше символов, чем length(s), возвращается пустая строка.
Примеры
julia> a = "March" "March" julia> chop(a) "Marc" julia> chop(a, head = 1, tail = 2) "ar" julia> chop(a, head = 5, tail = 5) ""исходный код
Base.chompФункция
chomp(s::AbstractString) -> SubString
Удаляет единственный trailing newline из строки.
Примеры
julia> chomp("Hello\n")
"Hello"
исходный код
Base.thisindФункция
thisind(s::AbstractString, i::Integer) -> Int
Если i находится в пределах s, возвращает индекс начала символа, кодовый блок которого i является частью. Другими словами, если i является началом символа, возвращает i; если i не является началом символа, отматывает до начала символа и возвращает этот индекс. Если i равно 0 или ncodeunits(s)+1, возвращает i. Во всех остальных случаях выбрасывает BoundsError.
Примеры
julia> thisind("α", 0)
0
julia> thisind("α", 1)
1
julia> thisind("α", 2)
1
julia> thisind("α", 3)
3
julia> thisind("α", 4)
ERROR: BoundsError: attempt to access String
at index [4]
[...]
julia> thisind("α", -1)
ERROR: BoundsError: attempt to access String
at index [-1]
[...]
исходный код
Base.nextindФункция
nextind(str::AbstractString, i::Integer, n::Integer=1) -> Int
-
Случай
n == 1Если
iнаходится в пределахs, вернуть индекс начала символа, кодирование которого начинается после индексаi. Другими словами, еслиiявляется началом символа, вернуть начало следующего символа; еслиiне является началом символа, перейти вперёд до начала символа и вернуть этот индекс. Еслиiравно0, вернуть1. Еслиiнаходится в пределах, но больше или равноlastindex(str), вернутьncodeunits(str)+1. В противном случае выброситьBoundsError. -
Случай
n > 1Ведёт себя как применение
nразnextindдляn==1. Единственное отличие в том, что еслиnнастолько велико, что применениеnextindдостигнетncodeunits(str)+1, то каждая оставшаяся итерация увеличивает возвращаемое значение на1. Это означает, что в этом случаеnextindможет вернуть значение больше, чемncodeunits(str)+1. -
Случай
n == 0Вернуть
iтолько еслиiявляется допустимым индексом вsили равен0. В противном случае выброситьStringIndexErrorилиBoundsError.
Примеры
julia> nextind("α", 0)
1
julia> nextind("α", 1)
3
julia> nextind("α", 3)
ERROR: BoundsError: attempt to access String
at index [3]
[...]
julia> nextind("α", 0, 2)
3
julia> nextind("α", 1, 2)
4
источник
Base.previndФункция
prevind(str::AbstractString, i::Integer, n::Integer=1) -> Int
-
Случай
n == 1Если
iнаходится в пределахs, вернуть индекс начала символа, кодирование которого начинается перед индексомi. Другими словами, еслиiявляется началом символа, вернуть начало предыдущего символа; еслиiне является началом символа, отмотать до начала символа и вернуть этот индекс. Еслиiравно1, вернуть0. Еслиiравноncodeunits(str)+1, вернутьlastindex(str). В противном случае выброситьBoundsError. -
Случай
n > 1Ведёт себя как применение
nразprevindдляn==1. Единственное отличие в том, что еслиnнастолько велико, что применениеprevindдостигнет0, то каждая оставшаяся итерация уменьшает возвращаемое значение на1. Это означает, что в этом случаеprevindможет вернуть отрицательное значение. -
Случай
n == 0Вернуть
iтолько еслиiявляется допустимым индексом вstrили равенncodeunits(str)+1. В противном случае выброситьStringIndexErrorилиBoundsError.
Примеры
julia> prevind("α", 3)
1
julia> prevind("α", 1)
0
julia> prevind("α", 0)
ERROR: BoundsError: attempt to access String
at index [0]
[...]
julia> prevind("α", 2, 2)
0
julia> prevind("α", 2, 3)
-1
источник
Base.Unicode.textwidthФункция
textwidth(c)
Возвращает количество столбцов, необходимых для вывода символа.
Примеры
julia> textwidth('α')
1
julia> textwidth('⛵')
2
источникtextwidth(s::AbstractString)
Возвращает количество столбцов, необходимых для вывода строки.
Примеры
julia> textwidth("March")
5
источник
Base.isasciiФункция
isascii(c::Union{AbstractChar,AbstractString}) -> Bool
Проверяет, принадлежит ли символ набору символов ASCII, или это верно для всех элементов строки.
Примеры
julia> isascii('a')
true
julia> isascii('α')
false
julia> isascii("abc")
true
julia> isascii("αβγ")
false
источник
Base.Unicode.iscntrlФункция
iscntrl(c::AbstractChar) -> Bool
Проверяет, является ли символ управляющим символом. Управляющие символы — это непечатаемые символы подмножества Latin-1 в Unicode.
Примеры
julia> iscntrl('\x01')
true
julia> iscntrl('a')
false
источник
Base.Unicode.isdigitФункция
isdigit(c::AbstractChar) -> Bool
Проверяет, является ли символ десятичной цифрой (0-9).
Примеры
julia> isdigit('❤')
false
julia> isdigit('9')
true
julia> isdigit('α')
false
источник
Base.Unicode.isletterФункция
isletter(c::AbstractChar) -> Bool
Проверяет, является ли символ буквой. Символ классифицируется как буква, если он принадлежит к Unicode-категории «Буква», то есть символ, код категории которого начинается с «L».
Примеры
julia> isletter('❤')
false
julia> isletter('α')
true
julia> isletter('9')
false
источник
Base.Unicode.islowercaseФункция
islowercase(c::AbstractChar) -> Bool
Проверяет, является ли символ строчной буквой. Символ классифицируется как строчная буква, если он принадлежит к Unicode-категории Ll, «Буква: строчная».
Примеры
julia> islowercase('α')
true
julia> islowercase('Γ')
false
julia> islowercase('❤')
false
источник
Base.Unicode.isnumericФункция
isnumeric(c::AbstractChar) -> Bool
Проверяет, является ли символ числовым. Символ классифицируется как числовой, если он принадлежит к Unicode-категории «Число», то есть символ, код категории которого начинается с «N».
Обратите внимание, что эта обширная категория включает символы, такие как ¾ и ௰. Используйте isdigit, чтобы проверить, является ли символ десятичной цифрой от 0 до 9.
Примеры
julia> isnumeric('௰')
true
julia> isnumeric('9')
true
julia> isnumeric('α')
false
julia> isnumeric('❤')
false
источник
Base.Unicode.isprintФункция
isprint(c::AbstractChar) -> Bool
Проверяет, является ли символ печатаемым, включая пробелы, но не управляющий символ.
Примеры
julia> isprint('\x01')
false
julia> isprint('A')
true
источник
Base.Unicode.ispunctФункция
ispunct(c::AbstractChar) -> Bool
Проверяет, принадлежит ли символ Unicode-категории «Пунктуация», то есть символ, код категории которого начинается с «P».
Примеры
julia> ispunct('α')
false
julia> ispunct('/')
true
julia> ispunct(';')
true
источник
Base.Unicode.isspaceФункция
isspace(c::AbstractChar) -> Bool
Проверяет, является ли символ символом пробела. Включает ASCII-символы '\t', '\n', '\v', '\f', '\r' и ' ', символ Latin-1 U+0085 и символы из Unicode-категории Zs.
Примеры
julia> isspace('\n')
true
julia> isspace('\r')
true
julia> isspace(' ')
true
julia> isspace('\x20')
true
источник
Base.Unicode.isuppercaseФункция
isuppercase(c::AbstractChar) -> Bool
Проверяет, является ли символ заглавной буквой. Символ классифицируется как заглавная буква, если он принадлежит к Unicode-категории Lu, «Буква: заглавная», или Lt, «Буква: строчная».
Примеры
julia> isuppercase('γ')
false
julia> isuppercase('Γ')
true
julia> isuppercase('❤')
false
источник
Base.Unicode.isxdigitФункция
isxdigit(c::AbstractChar) -> Bool
Проверяет, является ли символ допустимой шестнадцатеричной цифрой. Обратите внимание, что это не включает x (как в стандартном префиксе 0x).
Примеры
julia> isxdigit('a')
true
julia> isxdigit('x')
false
источник
Base.escape_stringФункция
escape_string(str::AbstractString[, esc])::AbstractString escape_string(io, str::AbstractString[, esc::])::Nothing
Общая эскапизация традиционных C и Unicode-эскапирующих последовательностей. Первый вариант возвращает эскапированную строку, второй — выводит результат в io.
Обратные слэши (\) эскапируются двойным обратным слэшем ("\\"). Непечатаемые символы эскапируются либо стандартными C-эскапирующими кодами, "\0" для NUL (если однозначно), кодом Unicode (префикс "\u" ) или в шестнадцатеричном формате (префикс "\x").
Необязательный аргумент esc указывает любые дополнительные символы, которые также должны быть эскапированы с помощью предваряющего обратного слэша (" также эскапируется по умолчанию в первом варианте).
Примеры
julia> escape_string("aaa\nbbb")
"aaa\\nbbb"
julia> escape_string("\xfe\xff") # invalid utf-8
"\\xfe\\xff"
julia> escape_string(string('\u2135','\0')) # unambiguous
"ℵ\\0"
julia> escape_string(string('\u2135','\0','0')) # \0 would be ambiguous
"ℵ\\x000"
См. также
unescape_string для обратной операции.
Base.unescape_stringФункция
unescape_string(str::AbstractString, keep = ())::AbstractString unescape_string(io, s::AbstractString, keep = ())::Nothing
Общая функция для обратного преобразования традиционных C и Unicode escape-последовательностей. Первый вариант возвращает строку с обратным экранированием, второй — выводит результат в io. Аргумент keep определяет набор символов, которые (вместе с обратными слешами) будут оставлены как есть.
Распознаются следующие escape-последовательности:
- Экранированный обратный слэш (
\\) - Экранированная двойная кавычка (
\") - Стандартные C escape-последовательности (
\a,\b,\t,\n,\v,\f,\r,\e) - Кодовые точки Unicode BMP (
\uс 1–4 шестнадцатеричными цифрами после) - Все кодовые точки Unicode (
\Uс 1–8 шестнадцатеричными цифрами после; максимальное значение = 0010ffff) - Шестнадцатеричные байты (
\xс 1–2 шестнадцатеричными цифрами после) - Восьмеричные байты (
\с 1–3 восьмеричными цифрами после)
Примеры
julia> unescape_string("aaa\\nbbb") # C escape sequence
"aaa\nbbb"
julia> unescape_string("\\u03c0") # unicode
"π"
julia> unescape_string("\\101") # octal
"A"
julia> unescape_string("aaa \\g \\n", ['g']) # using `keep` argument
"aaa \\g \n"
См. также
исходный код
© 2009–2020 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.5.3/base/strings/