Pregunta Para obtener SubString en Groovy separado por un personaje


Considere la siguiente cadena

String names = "Bharath-Vinayak-Harish-Punith"

Quiero obtener una salida en forma de cadena que solo contiene Bharat. (Arranque hasta la primera aparición del operador "-"). Cualquiera puede decirme, ¿cómo podemos hacer esto?


8
2018-06-29 06:24


origen


Respuestas:


En el caso general, estoy de acuerdo con el split método en la respuesta anterior, pero cuando solo devuelve la primera cadena, el método de subcadena es la misma cantidad de trabajo para el programador (y, para cuerdas increíblemente grandes, menos trabajo computacional):

String result = names.substring(0, names.indexOf('-'))

18
2018-06-29 07:21



Si está utilizando Groovy 2.0 (lanzado ayer), puede hacer:

String names = 'Bharath-Vinayak-Harish-Punith'
String result = names.takeWhile { it != '-' }
assert result == 'Bharath'

6
2018-06-29 07:41



Puedes usar split:

def theName = names.split(/-/)[0]

split devuelve una matriz de cadenas, luego obtiene el primer elemento de matriz.


4
2018-06-29 06:50



def names= 'Bharath-Vinayak-Harish-Punith'   
assert "Bharath" == (names =~ /^(.*?)\-/)[0][1]

1
2018-06-29 10:05



en caso de que tengas el Apache Commons Lang biblioteca disponible (que es parte de varios otros marcos, por ejemplo, Grails):

 def result = StringUtils.substringBefore(names, '-')

Atentamente, Björn


1
2017-11-17 10:56