Строки
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, необязательно задавая количество цифр для дополнения.
См. также digits, bitstring, count_zeros.
Примеры
julia> string(5, base = 13, pad = 4) "0005" julia> string(-13, base = 5, pad = 4) "-0023"исходный код
string(xs...)
Создает строку из любых значений, используя функцию print.
string обычно не следует определять напрямую. Вместо этого, определите метод print(io::IO, x::MyType). Если string(x) для определенного типа требует высокой эффективности, тогда имеет смысл добавить метод к string и определить print(io::IO, x::MyType) = print(io, string(x)) для обеспечения согласованности функций.
См. также: String, repr, sprint, show.
Примеры
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 может быть установлен в пару :key=>value, кортеж пар :key=>value, или объект IO или IOContext, атрибуты которого используются для потока ввода-вывода, передаваемого в show.
Обратите внимание, что repr(x) обычно аналогичен способу ввода значения x в Julia. См. также repr(MIME("text/plain"), x), чтобы вместо этого вернуть «красиво отформатированную» версию x, предназначенную для восприятия человеком, аналогично отображению в REPL x.
Передача кортежа в ключевой аргумент context требует Julia 1.7 или более поздней версии.
Примеры
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.
Примеры
julia> str = "αβγ"
"αβγ"
julia> transcode(UInt16, str)
3-element Vector{UInt16}:
0x03b1
0x03b2
0x03b3
julia> transcode(String, transcode(UInt16, str))
"αβγ"
исходный код
Base.unsafe_stringФункция
unsafe_string(p::Ptr{UInt8}, [length::Integer])
Скопировать строку из адреса строки C-стиля (завершающейся символом NUL) с кодировкой UTF-8. (Указатель можно безопасно освободить после этого.) Если указано length (длина данных в байтах), строка не должна быть завершена символом NUL.
Эта функция помечена как «небезопасная», потому что она вызовет сбой, если 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 байта.
См. также предикат isascii для фильтрации или замены не-ASCII символов.
Примеры
julia> ascii("abcdeγfgh")
ERROR: ArgumentError: invalid ASCII at index 6 in "abcdeγfgh"
Stacktrace:
[...]
julia> ascii("abcdefgh")
"abcdefgh"
исходный код
Base.RegexТип
Regex(pattern[, flags])
Тип, представляющий регулярное выражение. Объекты Regex могут использоваться для сопоставления строк с помощью match.
Объекты Regex могут быть созданы с использованием макроса строк @r_str. Конструктор Regex(pattern[, flags]) обычно используется, если строка pattern требует интерполяции. Подробности о флагах см. в документации макроса строк.
Для экранирования интерполированных переменных используйте \Q и \E (например, Regex("\\Q$x\\E"))
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 из литеральной строки.
Примеры
julia> html"Julia"
HTML{String}("Julia")
исходный код
Base.Docs.@text_strМакрос
@text_str -> Docs.Text
Создаёт объект Text из литеральной строки.
Примеры
julia> text"Julia" Juliaисходный код
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 могут быть этого типа, SubString{String}, Vector{UInt8}, или смежным подмассивом.
Примеры
julia> isvalid(Char, 0xd800)
false
julia> isvalid(String, SubString("thisisvalid",1,5))
true
julia> isvalid(Char, 0xd799)
true
Поддержка значений подмассива была добавлена в Julia 1.6.
Base.isvalidМетод
isvalid(s::AbstractString, i::Integer) -> Bool
Предикат, указывающий, является ли данный индекс началом кодирования символа в s или нет. Если isvalid(s, i) равно true, то 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: invalid index [2], valid nearby indices [1]=>'α', [3]=>'β' 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 Vector{Union{Nothing, SubString{String}}}:
"b"
julia> m.match
"aba"
julia> match(rx, "cabac", 3) === nothing
true
исходный код
Base.eachmatchФункция
eachmatch(r::Regex, s::AbstractString; overlap::Bool=false)
Ищет все совпадения регулярного выражения r в s и возвращает итератор по совпадениям. Если overlap равно 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 Vector{RegexMatch}:
RegexMatch("a1a")
RegexMatch("a3a")
julia> collect(eachmatch(rx, "a1a2a3a", overlap = true))
3-element Vector{RegexMatch}:
RegexMatch("a1a")
RegexMatch("a2a")
RegexMatch("a3a")
исходный код
Base.RegexMatchТип
RegexMatch
Тип, представляющий собой одно совпадение с Regex в строке. Обычно создаётся функцией match.
Поле match хранит подстроку всей совпавшей строки. Поле captures хранит подстроки для каждой группы захвата, индексированные по номеру. Для индексирования по имени группы захвата следует индексировать весь объект совпадения, как показано в примерах. Положение начала совпадения хранится в поле offset. Поле offsets хранит положения начала каждой группы захвата, причём 0 означает, что группа не была захвачена.
Этот тип может использоваться как итератор по группам захвата Regex, возвращая подстроки, захваченные в каждой группе. Благодаря этому, захваты совпадения могут быть распакованы. Если группа не была захвачена, nothing будет возвращено вместо подстроки.
Методы, принимающие объект RegexMatch, определены для iterate, length, eltype, keys, haskey и getindex, где ключами являются имена или номера группы захвата. См. keys для получения дополнительной информации.
Примеры
julia> m = match(r"(?<hour>\d+):(?<minute>\d+)(am|pm)?", "11:30 in the morning")
RegexMatch("11:30", hour="11", minute="30", 3=nothing)
julia> hr, min, ampm = m;
julia> hr
"11"
julia> m["minute"]
"30"
julia> m.match
"11:30"
исходный код
Base.keysМетод
keys(m::RegexMatch) -> Vector
Возвращает вектор ключей для всех групп захвата подлежащего регулярного выражения. Ключ включается даже если группа захвата не совпадает. То есть, idx будет в возвращаемом значении даже если m[idx] == nothing.
У безымянных групп захвата будут целые ключи, соответствующие их индексу. У именованных групп захвата будут строковые ключи.
Этот метод был добавлен в Julia 1.6
Примеры
julia> keys(match(r"(?<hour>\d+):(?<minute>\d+)(am|pm)?", "11:30"))
3-element Vector{Any}:
"hour"
"minute"
3
исходный код
Base.islessМетод
isless(a::AbstractString, b::AbstractString) -> Bool
Проверяет, предшествует ли строка a строке b в алфавитном порядке (технически, в лексикографическом порядке по кодам символов Юникода).
Примеры
julia> isless("a", "b")
true
julia> isless("β", "α")
false
julia> isless("a", "a")
false
исходный код
Base.:==Метод
==(a::AbstractString, b::AbstractString) -> Bool
Проверить, равны ли две строки посимвольно (технически, по кодовым точкам 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 символов (в textwidth) длины. Если s уже имеет n символов, возвращается такая же строка. Дополнение производится пробелами по умолчанию.
Примеры
julia> lpad("March", 10)
" March"
В Julia 1.7 эта функция была изменена на использование textwidth вместо прямого подсчёта символов (кодовых точек).
Base.rpadФункция
rpad(s, n::Integer, p::Union{AbstractChar,AbstractString}=' ') -> String
Преобразовать s в строку и дополнить полученную строку справа символом p, чтобы она стала n символов (в textwidth) длины. Если s уже имеет n символов, возвращается такая же строка. Дополнение производится пробелами по умолчанию.
Примеры
julia> rpad("March", 20)
"March "
В Julia 1.7 эта функция была изменена на использование textwidth вместо прямого подсчёта символов (кодовых точек).
Base.findfirstМетод
findfirst(pattern::AbstractString, string::AbstractString) findfirst(pattern::AbstractPattern, 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::AbstractPattern, 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,AbstractPattern,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.
occursin(haystack)
Создать функцию, проверяющую, встречается ли её аргумент в haystack, т.е. функцию, эквивалентную needle -> occursin(needle, haystack).
Возвращаемая функция имеет тип Base.Fix2{typeof(occursin)}.
Этот метод требует Julia 1.6 или более поздней версии.
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") # hat is above x in the input, above e in the output
"êxa"
julia> using Unicode
julia> join(reverse(collect(graphemes("ax̂e")))) # reverses graphemes; hat is above x in both in- and output
"ex̂a"
исходный код
Base.replaceМетод
replace(s::AbstractString, pat=>r, [pat2=>r2, ...]; [count::Integer])
Найдите заданный шаблон pat в s, и замените каждое вхождение на r. Если count предоставлено, замените не более count вхождений. pat может быть одиночным символом, вектором или набором символов, строкой или регулярным выражением. Если r является функцией, каждое вхождение заменяется на r(s), где s — совпавший подстрочный фрагмент (когда pat — AbstractPattern или AbstractString) или символ (когда pat — AbstractChar или коллекция AbstractChar). Если pat — регулярное выражение, а r — SubstitutionString, тогда ссылки на группы захвата в r заменяются соответствующим совпавшим текстом. Чтобы удалить вхождения pat из string, установите r в пустую String ("").
Можно указать несколько шаблонов, и они будут применяться слева направо одновременно, так что только один шаблон будет применён к любому символу, и шаблоны будут применяться только к входному тексту, а не к замещениям.
Поддержка нескольких шаблонов требует версии 1.7.
Примеры
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."
julia> replace("abcabc", "a" => "b", "b" => "c", r".+" => "a")
"bca"
исходный код
Base.eachsplitФункция
eachsplit(str::AbstractString, dlm; limit::Integer=0, keepempty::Bool=true) eachsplit(str::AbstractString; limit::Integer=0, keepempty::Bool=false)
Разбить str по вхождениям разделителя(ей) dlm и вернуть итератор над подстроками. dlm может быть в любом формате, разрешённом первым аргументом findnext (т. е. в качестве строки, регулярного выражения или функции), или как одиночный символ или набор символов.
Если dlm опущено, оно по умолчанию равно isspace.
Необязательные ключевые аргументы:
-
limit: максимальный размер результата.limit=0означает отсутствие максимального размера (по умолчанию) -
keepempty: сохранить ли пустые поля в результате. По умолчаниюfalseбез аргументаdlm,trueс аргументомdlm.
См. также split.
Функция eachsplit требует как минимум Julia 1.8.
Примеры
julia> a = "Ma.rch"
"Ma.rch"
julia> collect(eachsplit(a, "."))
2-element Vector{SubString}:
"Ma"
"rch"
исходный код
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.
Примеры
julia> a = "Ma.rch"
"Ma.rch"
julia> split(a, ".")
2-element Vector{SubString{String}}:
"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 Vector{SubString{String}}:
"M"
"a"
"r"
"c"
"h"
julia> rsplit(a, "."; limit=1)
1-element Vector{SubString{String}}:
"M.a.r.c.h"
julia> rsplit(a, "."; limit=2)
2-element Vector{SubString{String}}:
"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 этому набору.
Примеры
julia> startswith("JuliaLang", "Julia")
true
исходный кодstartswith(prefix)
Создать функцию, которая проверяет, начинается ли её аргумент с prefix, т. е. функция, эквивалентная y -> startswith(y, prefix).
Возвращённая функция имеет тип Base.Fix2{typeof(startswith)}, который может быть использован для реализации специализированных методов.
Единственный аргумент startswith(prefix) требует как минимум Julia 1.5.
Примеры
julia> startswith_julia = startswith("Julia");
julia> startswith_julia("Julia")
true
julia> startswith_julia("NotJulia")
false
исходный код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, contains.
Примеры
julia> endswith("Sunday", "day")
true
исходный кодendswith(suffix)
Создайте функцию, проверяющую, заканчивается ли её аргумент на suffix, то есть функцию, эквивалентную y -> endswith(y, suffix).
Возвращаемая функция имеет тип Base.Fix2{typeof(endswith)}, который можно использовать для реализации специализированных методов.
Единственный аргумент endswith(suffix) требует по меньшей мере Julia 1.5.
Примеры
julia> endswith_julia = endswith("Julia");
julia> endswith_julia("Julia")
true
julia> endswith_julia("JuliaLang")
false
исходный код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).
См. также occursin, in, issubset.
Примеры
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 со всеми символами, преобразованными в верхний регистр.
См. также lowercase, titlecase, uppercasefirst.
Примеры
julia> uppercase("Julia")
"JULIA"
исходный код
Base.Unicode.lowercaseФункция
lowercase(s::AbstractString)
Возвращает s со всеми символами, преобразованными в нижний регистр.
См. также uppercase, titlecase, lowercasefirst.
Примеры
julia> lowercase("STRINGS AND THINGS")
"strings and things"
исходный код
Base.Unicode.titlecaseФункция
titlecase(s::AbstractString; [wordsep::Function], strict::Bool=true) -> String
Преобразует первый символ каждого слова в s; если strict истинно, каждый последующий символ преобразуется в нижний регистр, иначе остаются неизменными. По умолчанию, все символы, не являющиеся буквами, начинающие новую графемную последовательность, рассматриваются как разделители слов; предикат может быть передан в качестве ключевого слова wordsep для определения символов, которые следует рассматривать как разделители слов. См. также uppercasefirst для преобразования только первого символа в s.
См. также uppercase, lowercase, uppercasefirst.
Примеры
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,] iterator [, delim [, last]])
Объединяет любые iterator в одну строку, вставляя заданный разделитель (если есть) между смежными элементами. Если last задан, он будет использоваться вместо delim между двумя последними элементами. Каждый элемент iterator преобразуется в строку с помощью print(io::IOBuffer, x) . Если io задан, результат записывается в io вместо возвращения в виде String.
Примеры
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), возвращается пустая строка.
См. также chomp, startswith, first.
Примеры
julia> a = "March" "March" julia> chop(a) "Marc" julia> chop(a, head = 1, tail = 2) "ar" julia> chop(a, head = 5, tail = 5) ""исходный код
Base.chopprefixФункция
chopprefix(s::AbstractString, prefix::Union{AbstractString,Regex}) -> SubString
Удаляет префикс prefix из s. Если s не начинается с prefix, возвращается строка, равная s.
См. также chopsuffix.
Эта функция доступна начиная с Julia 1.8.
Примеры
julia> chopprefix("Hamburger", "Ham")
"burger"
julia> chopprefix("Hamburger", "hotdog")
"Hamburger"
исходный код
Base.chopsuffixФункция
chopsuffix(s::AbstractString, suffix::Union{AbstractString,Regex}) -> SubString
Удаляет суффикс suffix из s. Если s не заканчивается на suffix, возвращается строка, равная s.
См. также chopprefix.
Эта функция доступна начиная с Julia 1.8.
Примеры
julia> chopsuffix("Hamburger", "er")
"Hamburg"
julia> chopsuffix("Hamburger", "hotdog")
"Hamburger"
исходный код
Base.chompФункция
chomp(s::AbstractString) -> SubString
Удалить единственную конечную новую строку из строки.
См. также chop.
Примеры
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 2-codeunit String at index [4]
[...]
julia> thisind("α", -1)
ERROR: BoundsError: attempt to access 2-codeunit 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 2-codeunit 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 2-codeunit 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
Например, isascii может использоваться в качестве предикатной функции для filter или replace соответственно для удаления или замены не-ASCII-символов:
julia> filter(isascii, "abcdeγfgh") # discard non-ASCII chars
"abcdefgh"
julia> replace("abcdeγfgh", !isascii=>' ') # replace non-ASCII chars with spaces
"abcde fgh"
исходный код
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 Letter, т. е. символ, код категории которого начинается с 'L'.
Примеры
julia> isletter('❤')
false
julia> isletter('α')
true
julia> isletter('9')
false
исходный код
Base.Unicode.islowercaseФункция
islowercase(c::AbstractChar) -> Bool
Проверяет, является ли символ строчной буквой (согласно свойству Lowercase стандарта Unicode).
См. также isuppercase.
Примеры
julia> islowercase('α')
true
julia> islowercase('Γ')
false
julia> islowercase('❤')
false
исходный код
Base.Unicode.isnumericФункция
isnumeric(c::AbstractChar) -> Bool
Проверяет, является ли символ числовым. Символ классифицируется как числовой, если он принадлежит универсальной категории Unicode Number, т. е. символ, код категории которого начинается с '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 Punctuation, т. е. символ, код категории которого начинается с '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 Uppercase).
См. также islowercase.
Примеры
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]; keep = ())::AbstractString escape_string(io, str::AbstractString[, esc]; keep = ())::Nothing
Общая экранизация традиционных C-последовательностей и последовательностей Unicode. Первый вариант возвращает экранированную строку, второй выводит результат в io.
Обратные слэши (\) экранируются двойным обратным слэшем ("\\"). Непечатные символы экранируются либо стандартными C-экранирующими кодами, "\0" для NUL (если однозначно), кодовым значением Unicode ("\u" префикс) или в шестнадцатеричном формате ("\x" префикс).
Необязательный аргумент esc указывает любые дополнительные символы, которые также должны быть экранированы с помощью префикса обратного слэша (" также экранируется по умолчанию в первом варианте).
Аргумент keep указывает набор символов, которые должны оставаться без изменений. Обратите внимание, что esc имеет здесь приоритет.
См. также unescape_string для обратной операции.
Аргумент keep доступен начиная с Julia 1.7.
Примеры
julia> escape_string("aaa\nbbb")
"aaa\\nbbb"
julia> escape_string("aaa\nbbb"; keep = '\n')
"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"
исходный код
Base.unescape_stringФункция
unescape_string(str::AbstractString, keep = ())::AbstractString unescape_string(io, s::AbstractString, keep = ())::Nothing
Общая экранизация традиционных C-последовательностей и последовательностей Unicode. Первый вариант возвращает экранированную строку, второй выводит результат в io. Аргумент keep определяет набор символов, которые (наряду с обратными слэшами) должны остаться без изменений.
Распознаются следующие последовательности экранирования:
- Экранированный обратный слэш (
\\) - Экранированная двойная кавычка (
\") - Стандартные C-последовательности экранирования (
\a,\b,\t,\n,\v,\f,\r,\e) - Кодовые точки BMP Unicode (
\uс 1–4 последующими шестнадцатеричными цифрами) - Все кодовые точки Unicode (
\Uс 1–8 последующими шестнадцатеричными цифрами; максимальное значение = 0010ffff) - Шестнадцатеричные байты (
\xс 1–2 последующими шестнадцатеричными цифрами) - Восьмеричные байты (
\с 1–3 последующими восьмеричными цифрами)
См. также escape_string.
Примеры
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–2022 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.8/base/strings/