2016-07-21 19 views
2

ich eine Situation haben, wo ich wie wie unten Separator char erhalten aus dem gegebenen String wollen: -Wie nicht-alphabetische Separator Zeichen aus string

String str1 = "saurabh|om|anurag|abhishek|jitendra" 

String str2 = "amit,ankur,sumit,aniket,suheel" 

String str3 = "aj-kumar-manav-lalit-gaurav" 

------- 

In oben Strings Ich möchte Separator char erhalten, wie : -

String separatorStr1 = "|" 
String separatorStr2 = "," 
String separatorStr3 = "-" 

Hinweis: - Separator char immer nicht alphabetisch in String

Gibt es einen Weg, dies zu erreichen?

+0

zweite Zeichen erhalten von jedem String lol – xenteros

+0

@xenteros Nein, das ist nur Situation, Nicht sicher, die Länge der Zeichenfolge vor dem Trennzeichen ... die Zeichenfolge könnte sein 'abb | bs | csaf | dwet | erww' –

+1

@xenteros siehe aktualisierte Frage ..:) –

Antwort

3

groovy Mit regexp und find ([^ \ w] alle nicht-alphanumerischen Zeichen)

def getSeparator = { str -> 
    str.find(~/[^\w]/) 
} 

String str1 = "saurabh|om|anurag|abhishek|jitendra" 
String str2 = "amit,ankur,sumit,aniket,suheel" 
String str3 = "aj-kumar-manav-lalit-gaurav" 

assert getSeparator(str1) == '|' 
assert getSeparator(str2) == ',' 
assert getSeparator(str3) == '-' 
+0

Großartig .. arbeite gut !!! ... aber könnten Sie mir sagen, mit Regexp ist gut genug ?? –

+1

Normalerweise ist regexp nicht zu lesbar, aber für dieses Beispiel ist es ziemlich einfach und zeigt, wie einfach reguläre Ausdrücke mit der Syntax "~ /.../" groovig sind –

1

Warum ist ein - Separator von str3? Es könnte auch a sein.

Angenommen, Separator muss nicht-alphabetisch durchgeschleift sein und nach dem ersten nicht alphabetischen Zeichen suchen.

In zukünftigen Fragen versuchen Sie zu vermeiden, dass andere Benutzer raten, was Sie meinen - versuchen Sie, das Thema eines Themas zu definieren.

+0

danke für Sie Vorschlag, aktualisierte meine Frage auch .. aber Sie können es hervorheben, indem Sie Anmerkung nicht wirklich durch Antwort zur Verfügung stellen .. thnaks .. :) –

+0

Wenn es nicht alphabetisch ist, dann könnte meine Lösung funktionieren. – xenteros

+0

Eigentlich möchte ich mehr groovier, wenn es irgendeine Methode zur Verfügung gibt .. –

1

von xenteros Vorschlag Ich habe dies durch folgende Art und Weise erreicht werden: -

String str1 = "saurabh|om|anurag|abhishek|jitendra" 
String str2 = "amit,ankur,sumit,aniket,suheel" 
String str3 = "aj-kumar-manav-lalit-gaurav" 

String separatorStr1 = str1.toCharArray().find { !Character.isLetterOrDigit(it) } 
String separatorStr2 = str2.toCharArray().find { !Character.isLetterOrDigit(it) } 
String separatorStr3 = str3.toCharArray().find { !Character.isLetterOrDigit(it) } 

assert separatorStr1 == '|' 
assert separatorStr2 == ',' 
assert separatorStr3 == '-' 
+1

Danke für das Geben mir Credits :) – xenteros

+0

@xenteros, yeah weil Vorschlag ist deins ... aber noch bin ich auf der Suche nach mehr groovier Lösung ... :) –