división de cadena solo por la primera aparición de un delimitador

8

Me gustaría dividir una cadena por la primera aparición de ..

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

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

¿Cómo es posible en Julia dividir una cadena solo una vez para obtener: "x1"
"y1.xyz22"?

Gracias de antemano,

usuario977828
fuente

Respuestas:

3

Usa la limitpalabra clave.

Para este tipo de preguntas también puede usar de manera eficiente la documentación en línea ... simplemente escriba ?split(o cualquier otra función o tipo) en la consola para recuperar una buena explicación de la función, sus argumentos y, a menudo, ejemplos de uso. En este 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
fuente
7

El limitargumento de la palabra clave establecerá el número máximo de fragmentos en el 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
fuente