Skip to content

Commit 34751ed

Browse files
committed
Clean up split and rsplit methods
1 parent e7d4dd5 commit 34751ed

File tree

1 file changed

+12
-21
lines changed

1 file changed

+12
-21
lines changed

base/strings/util.jl

+12-21
Original file line numberDiff line numberDiff line change
@@ -274,15 +274,6 @@ julia> rpad("March",20)
274274
"""
275275
rpad(s, n::Integer, p=" ") = rpad(string(s),n,string(p))
276276

277-
# splitter can be a Char, Vector{Char}, AbstractString, Regex, ...
278-
split(str::T, splitter; limit::Integer=0, keep::Bool=true) where {T<:SubString} =
279-
_split(str, splitter, limit, keep, T[])
280-
split(str::T, splitter::Union{Tuple{Vararg{Char}},AbstractVector{Char},Set{Char}};
281-
limit::Integer=0, keep::Bool=true) where {T<:SubString} =
282-
_split(str, occursin(splitter), limit, keep, T[])
283-
split(str::T, splitter::Char; limit::Integer=0, keep::Bool=true) where {T<:SubString} =
284-
_split(str, equalto(splitter), limit, keep, T[])
285-
286277
"""
287278
split(s::AbstractString, [chars]; limit::Integer=0, keep::Bool=true)
288279
@@ -307,17 +298,18 @@ julia> split(a,".")
307298
"rch"
308299
```
309300
"""
310-
split
301+
function split end
311302

312303
split(str::T, splitter;
313304
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
314-
_split(str, splitter, limit, keep, SubString{T}[])
305+
_split(str, splitter, limit, keep, T <: SubString ? T[] : SubString{T}[])
315306
split(str::T, splitter::Union{Tuple{Vararg{Char}},AbstractVector{Char},Set{Char}};
316307
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
317-
_split(str, occursin(splitter), limit, keep, SubString{T}[])
308+
_split(str, occursin(splitter), limit, keep, T <: SubString ? T[] : SubString{T}[])
318309
split(str::T, splitter::Char;
319310
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
320-
_split(str, equalto(splitter), limit, keep, SubString{T}[])
311+
_split(str, equalto(splitter), limit, keep, T <: SubString ? T[] : SubString{T}[])
312+
321313
function _split(str::AbstractString, splitter, limit::Integer, keep_empty::Bool, strs::Array)
322314
i = start(str)
323315
n = endof(str)
@@ -343,9 +335,6 @@ end
343335
# a bit oddball, but standard behavior in Perl, Ruby & Python:
344336
split(str::AbstractString) = split(str, _default_delims; limit=0, keep=false)
345337

346-
rsplit(str::T, splitter; limit::Integer=0, keep::Bool=true) where {T<:SubString} =
347-
_rsplit(str, splitter, limit, keep, T[])
348-
349338
"""
350339
rsplit(s::AbstractString, [chars]; limit::Integer=0, keep::Bool=true)
351340
@@ -374,14 +363,16 @@ julia> rsplit(a,".";limit=2)
374363
"h"
375364
```
376365
"""
366+
function rsplit end
367+
377368
rsplit(str::T, splitter; limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
378-
_rsplit(str, splitter, limit, keep, SubString{T}[])
369+
_rsplit(str, splitter, limit, keep, T <: SubString ? T[] : SubString{T}[])
379370
rsplit(str::T, splitter::Union{Tuple{Vararg{Char}},AbstractVector{Char},Set{Char}};
380-
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
381-
_rsplit(str, occursin(splitter), limit, keep, SubString{T}[])
371+
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
372+
_rsplit(str, occursin(splitter), limit, keep, T <: SubString ? T[] : SubString{T}[])
382373
rsplit(str::T, splitter::Char;
383-
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
384-
_rsplit(str, equalto(splitter), limit, keep, SubString{T}[])
374+
limit::Integer=0, keep::Bool=true) where {T<:AbstractString} =
375+
_rsplit(str, equalto(splitter), limit, keep, T <: SubString ? T[] : SubString{T}[])
385376

386377
function _rsplit(str::AbstractString, splitter, limit::Integer, keep_empty::Bool, strs::Array)
387378
i = start(str)

0 commit comments

Comments
 (0)