Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

322
Vistas
¿Cómo dividir la cadena en la primera barra vertical después de la primera coma?

Tengo una cadena como:

string1: http://localapp/lkasdjasd/answers/156, ¿Lorem ipsum dolor? ¿Es Lorem, no? | aquí está la respuesta

Necesita dividir la cadena en la primera barra vertical después de la primera coma:

  1. clave: 156
  2. cadena1: ¿Lorem ipsum dolor? ¿Es Lorem, no?
  3. string2: Aquí está la respuesta
 arr = line.split(',') key = arr[0].split('/')[-1].to_i title = arr[1] desc = arr[2]

Hasta ahora solo descubrí cómo obtener la clave.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puedes usar

 /\A(?:[^,]*[^\d,])?(\d+),([^|]*)\|\s*(.+)/

Vea la demostración de Rubular . Detalles :

  • \A - comienzo de la cadena
  • (?:[^,]*[^\d,])? - una secuencia opcional de cero o más que no sean comas y luego un carácter que no sea un dígito y una coma
  • (\d+) - Grupo 1: uno o más dígitos
  • , - una coma
  • ([^|]*) - Grupo 2: cero o más caracteres que no sean tuberías
  • \| - un | carbonizarse
  • \s* - cero o más espacios en blanco
  • (.+) - Grupo 3: uno o más caracteres que no sean de salto de línea tantos como sea posible.

Vea una demostración de Ruby :

 s = 'http://localapp/lkasdjasd/answers/156, Lorem ipsum dolor? is it Lorem, nah? | Here is the answer' /\A(?:[^,]*[^\d,])?(?<key>\d+),(?<title>[^|]*)\|\s*(?<desc>.+)/ =~ s puts "Key: #{key}\nTitle: #{title}\nDescription: #{desc}"

Producción:

 Key: 156 Title: Lorem ipsum dolor? is it Lorem, nah? Description: Here is the answer
over 4 years ago · Santiago Trujillo Denunciar

0

Voto por la respuesta: https://stackoverflow.com/a/69299320/13841038 en el que puede llamar a .to_i y .strip mientras imprime

 key.to_i title.strip desc.strip

Si no prefiere las expresiones regulares, el siguiente fragmento es una versión modificada de su solución

 str = "http://localapp/lkasdjasd/answers/156, Lorem ipsum dolor? is it Lorem, nah? | Here is the answer" pipe_arr = str.split('|') arr = pipe_arr[0].split(',') key = arr[0].split('/')[-1].to_i title = (arr[1] + ',' + arr[2]).strip desc = pipe_arr[1].strip
over 4 years ago · Santiago Trujillo Denunciar

0

Lo siguiente responde a lo que se pide en el título y en la tercera línea, que son inequívocos. Sin embargo, eso no es consistente con el resultado deseado.

 r = /\A([^,]*,[^|]*)\|(.*)/x
 "Little Miss Muffett, sat on | a tuffet".scan(r).first #=> ["Little Miss Muffett, sat on ", " a tuffet"]
 "Little | Miss, Muffett, sat on |, a | tuffet".scan(r).first #=> ["Little | Miss, Muffett, sat on ", ", a | tuffet"]

Podemos escribir la expresión regular en modo de espacio libre para que se autodocumente.

 r = / \A # match beginning of string ( # begin capture group 1 [^,]* # match 0 or more chars other than a comma , # match a comma [^|]* # match 0 or more chars other than a pipe ) # end capture group 1 \| # match a pipe (.*) # match 0 or more chars and save to capture group 2 /x # invoke free-spacing regex definition mode

Consulte String#scan para obtener una explicación de cómo el método trata las expresiones regulares que contienen grupos de captura. 1


Una segunda forma, que no usa una expresión normal, es usar String#index :

 def split_it(str) i = str.index(',') return nil if i.nil? j = str.index('|', i+1) j.nil? ? nil : [str[0,j-1], str[j+1..-1]] end
 split_it("Little Miss Muffett, sat on | a tuffet") #=> ["Little Miss Muffett, sat on", " a tuffet"]
 split_it("Little | Miss, Muffett, sat on |, a | tuffet") #=> ["Little | Miss, Muffett, sat on", ", a | tuffet"]

1 Una alternativa, que daré sin explicación, es la siguiente: "Pequeña | Señorita, Muffett, se sentó en |, a | tuffet".match(/\A[^,] ,[^|] \K|/) && [$`, $'] #=> ["La pequeña | señorita, Muffett, se sentó en ", ", un | tuffet"].

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda