dividir string apenas pela primeira ocorrência de um delimitador

8

Eu gostaria de dividir uma string pela primeira ocorrência de ..

julia> a = "x1.y1.xyz22"
"x1.y1.xyz22"

julia> split(a,".")
3-element Array{SubString{String},1}:
 "x1"   
 "y1"   
 "xyz22"

Como é possível em Julia para dividir uma corda apenas uma vez para obter: "x1"
"y1.xyz22"?

Agradeço antecipadamente,

user977828
fonte

Respostas:

3

Use a limitpalavra - chave

Para esse tipo de pergunta, você também pode usar com eficiência a documentação em linha .. basta digitar ?split(ou qualquer outra função ou tipo) no console para recuperar uma boa explicação da função, seus argumentos e, geralmente, exemplos de uso. Nesse caso:

help?> split
search: split splitext splitdir splitpath splitdrive rsplit splice! displaysize @specialize @nospecialize

  split(str::AbstractString, dlm; limit::Integer=0, keepempty::Bool=true)
  split(str::AbstractString; limit::Integer=0, keepempty::Bool=false)

  Split str into an array of substrings on occurrences of the delimiter(s) dlm. dlm can be any of the formats allowed by findnext's first argument (i.e. as a string, regular expression or a function), or as a single character or collection of characters.

  If dlm is omitted, it defaults to isspace.

  The optional keyword arguments are:

    •    limit: the maximum size of the result. limit=0 implies no maximum (default)

    •    keepempty: whether empty fields should be kept in the result. Default is false without a dlm argument, true with a dlm argument.

  See also rsplit.

  Examples
  ≡≡≡≡≡≡≡≡≡≡

  julia> a = "Ma.rch"
  "Ma.rch"

  julia> split(a,".")
  2-element Array{SubString{String},1}:
   "Ma"
   "rch"

  ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

  Splits an HyperRectangle into two along an axis at a given location.
Antonello
fonte
7

O limitargumento de palavra-chave irá definir o número máximo de blocos no resultado:

julia> split("abc.de.fg.hij.k", "."; limit=2) # split at most once
2-element Array{SubString{String},1}:
 "abc"        
 "de.fg.hij.k"

julia> split("abc.de.fg.hij.k", "."; limit=3) # split at most twice
3-element Array{SubString{String},1}:
 "abc"     
 "de"      
 "fg.hij.k"
David Varela
fonte