рдирдорд╕реНрддреЗ,
рдореИрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдореИрдВ рдЕрдм split(str, splitter; limit=0, keep=true)
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рд╢рд╛рдЦрд╛ рдореЗрдВ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдпрд╛, рдФрд░ рдЬреЛ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ,
julia> split("abcabcdabbcd", "b"; keep_splitter = true)
3-element Array{SubString{String},1}:
"a"
"bca"
"bcda"
"b"
"bcd"
рдХреНрдпрд╛ рдореБрдЭреЗ рдХрд╛рдо рдХрд░рддреЗ рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рдпрд╣ рдмрд╛рдХреА рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрджрд▓рд╛рд╡ рд╣реЛрдЧрд╛?
рдХреБрдЫ рд╡рд┐рдЪрд╛рд░:
keep_spliter
рдзреНрд╡рдЬ true
, рддреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ keep
(рдЬреЛ рдЦрд╛рд▓реА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ), true
рдпрд╛ false
, рдХреНрдпреЛрдВрдХрд┐, рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЦрд╛рд▓реА рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗредreadlines(file)
рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣реИ рдирд╛? рд╕рд░рдгреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдЕрдВрдд рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ '\n'
редjulia> split("abcabcdabbcd", "b"; keep_splitter = true, prepend = false)
3-element Array{SubString{String},1}:
"ab"
"cab"
"cdab"
"b"
"cd"
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!
рдкреАрдПрд╕, рд╢рд╛рдпрдж рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдЕрднреА рддрдХ рдирд╣реАрдВ рдЬрд╛рдирддрд╛
рд╕рдВрднрд╛рд╡рд┐рдд splitlines
рдлрд╝рдВрдХреНрд╢рди (https://github.com/JuliaLang/julia/pull/20390) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд, рдФрд░ readline
/ eachline
рдХреЗ рдирдП chomp
рддрд░реНрдХ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд eachline
(https://github.com/JuliaLang/julia/pull/19944, https://github.com/JuliaLang/julia/pull/19944)ред
рд╕реАрд╕реА: @mpastell
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд░реНрддрдорд╛рди keep
рдХреАрд╡рд░реНрдб рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд╕реНрдкреНрд▓рд┐рдЯрд░ рдХреЛ 1 рдпрд╛ рдЕрдзрд┐рдХ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛рдиреА рдЗрд╕реЗ (...)+
рдореЗрдВ рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рд▓рдкреЗрдЯрдирд╛ред
рдКрдВрдЯ рдХреЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рднреА рдлрд╕рд▓ рд╣реЛрддрд╛ рд╣реИ:
foo = "ThisShouldBeSeparate"
split(foo, isuppercase)
5-element Array{SubString{String},1}:
""
"his"
"hould"
"e"
"eparate"
рдПрдХ рд╕рдорд╛рдзрд╛рди рд░реЗрдЧреЗрдХреНрд╕ рдбрд┐рд▓реАрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ: split(foo, r"(?=[A-Z])")
рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╣реИ (рдФрд░ рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛)ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдКрдВрдЯ рдХреЗрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рднреА рдлрд╕рд▓ рд╣реЛрддрд╛ рд╣реИ:
рдПрдХ рд╕рдорд╛рдзрд╛рди рд░реЗрдЧреЗрдХреНрд╕ рдбрд┐рд▓реАрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
split(foo, r"(?=[A-Z])")
рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдХрдо рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд╣реИ (рдФрд░ рдореИрдВ рдЗрд╕реЗ рдмрд╛рд╣рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рдмрд┐рдирд╛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛)ред