2010-12-20 9 views
21

Supongo que es una pregunta fácil¿Cómo elimino la subcadena después de cierto carácter en una cadena usando Ruby?

¿Cómo puedo hacer esto?

+1

Bueno, creo que el título se explica por sí solo. Además, acepté la respuesta de Jacob hace aproximadamente 13 horas, solo dale a los demás algo de tiempo; normalmente la gente no actualiza la misma página y espera respuestas. – JayX

+1

Editar el título no es para beneficiarlo. Es para beneficiar a otros que están buscando una respuesta al mismo problema. No aclarar tu título y pregunta realmente te lastima porque nadie votará tu pregunta si creen que es inútil. Solo mis dos centavos. – DJTripleThreat

+1

La pregunta no explica cuánto tiempo dura la subcadena, por lo que es muy vaga. Aparentemente, usted quería que la subcadena comenzara inmediatamente después de que la primera instancia de un cierto personaje se extendiera hasta el final de la cadena principal. No esperes que leamos mentes. Otro telépata podría hacer la misma pregunta que usted pero exigir una respuesta diferente porque solo quiere eliminar una subcadena de longitud 1. –

Respuesta

31
new_str = str.slice(0..(str.index('blah'))) 

alt text

+3

str.slice (/.* r /) – eMgz

+1

Si quiere llegar al final del delímetro: 'new_str = str.slice (0 .. (str.index ('blah') + 'blah'.length)) ' – mvndaai

+3

¿Qué ocurre si el carácter dado no se encuentra en la cadena? –

4
str = "Hello World" 
stopchar = 'W' 
str.sub /#{stopchar}.+/, stopchar 
#=> "Hello W" 
+0

Ambos trabajaron, ¡gracias! – JayX

23

encuentro que "Part1?Part2".split('?')[0] es más fácil de leer.

+3

pero luego tendría que volver a agregarlo al? si lo quisiste, entonces no creo que responda tu pregunta exacta. – Ivan

+0

Me gusta esta respuesta, porque no tiene que comprobar si "?" está presente, también funciona con cualquier otra cadena sin lanzar una excepción. –

7

me sorprende que nadie sugiere utilizar 'gsub'

irb> "truncate".gsub(/a.*/, 'a') 
=> "trunca" 

La versión explosión de gsub se puede utilizar para modificar la cadena.

+1

¿No quiere decir '/ (? <= A). * /' O '/ a \ K. * /', Para excluir '" a "' de la coincidencia? –

+0

@CarySwoveland sí, eso o reintroducir el char. Buena atrapada. – philant

Cuestiones relacionadas