2012-06-29 10 views
6

Betrachten Sie die unten StringUm SubString in Groovy getrennt durch ein Zeichen

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

Ich will bekommen Ausgabe in Form von String enthält nur Bharath zu bekommen. (String bis zum ersten Auftreten von "-" Operator). Jeder kann mir bitte sagen, wie können wir das machen?

+1

By the way, ist diese Hausaufgaben irgendeiner Art? – River

+0

Nein. Tatsächlich habe ich die gleiche Art von Situation beim Codieren für mein Projekt gefunden. –

Antwort

13

Im allgemeinen Fall stimme ich der split Methode in der vorherigen Antwort zu, aber wenn nur die erste Zeichenfolge zurückgegeben wird, ist die Substring-Methode die gleiche Menge an Arbeit für den Programmierer (und für wahnsinnig große Strings weniger Rechenarbeit):

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

gut, es funktioniert. Aber es gibt viele Vorkommen von "-" .Wieso es nur den ersten Index nehmen. –

+1

@BharathAN [indexOf gibt das erste Vorkommen zurück] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#indexOf%28java.lang.String%29) –

4

Sie Split verwenden:

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

Split gibt ein String-Array, erhält dann das erste Array-Element.

+0

Kelly andere Methoden als split() oder tokanize() –

+1

Nun, Sie könnten indexOf verwenden, um die Position des ersten "-" zu finden, dann verwenden Teilstring vom Anfang der Zeichenfolge zu dem Zeichen direkt vor dem Bindestrich. Aber warum sollten Sie dies tun, anstatt die eingebauten Funktionen dafür zu nutzen? – Kelly

+0

Split-Methode gibt Array von Zeichenfolgen zurück. Aber ich brauche nicht alle Werte, ich brauche nur den ersten Teil. Ich denke, es verbraucht einfach mehr Speicher mit der Split-Methode. –

5

Wenn Sie mit Groovy 2.0 (gestern veröffentlicht), können Sie tun:

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

dies ist funktioniert nicht groovy Konsole tim_yates .. –

+0

@BharathAN Verwenden Sie Groovy 2.0? Meinst du die Webkonsole? Die Webkonsole läuft mit 1.8.4 ... –

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

falls Sie den Apache Commons Lang Bibliothek verfügbar (die Teil verschiedener anderer Frameworks ist, z. Grails):

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

Mit freundlichen Grüßen, Björn

Verwandte Themen