2014-02-05 13 views
18

Ich weiß, es muss einen einfacheren Weg zu überprüfen, aber das ist, was ich gerade mache.Wie überprüft man, ob eine Zeichenfolge an einer bestimmten Position Zeichen a-h enthält?

if (g.charAt(0) == 'a' || g.charAt(0) =='b' || g.charAt(0) =='c' || 
    g.charAt(0) == 'd' || g.charAt(0) =='e' || g.charAt(0) =='f' || 
    g.charAt(0) == 'g' || g.charAt(0) =='h') 
+1

Sie können 'g.charAt (0)' einer Variablen zuweisen, um diese zu verkürzen. – csmckelvey

+0

Denken Sie daran, dass die Buchstaben nur Werte sind, in Dezimal: a = 97, b = 104. So können Sie auch überprüfen, ob Ihre g.CharAt (0) gleich sind oder zwischen 97 und 104. – chwi

Antwort

38

auf Charakter Bestellung Unter Berufung und dass a..h is a consecutive range:

char firstChar = g.charAt(0); 
if (firstChar >= 'a' && firstChar <= 'h') { 
    // .. 
} 
+0

Nicht '&&' sollte es sein '||'. –

+2

@tintinmj Nicht in diesem Fall, das ist eine Bereichsüberprüfung für "zwischen a und h, inklusive". Der Wechsel zu '||' ohne DM zu verwenden würde zu allem passen :) – user2864740

+0

nein ist ok !!!! –

31

Verwenden Sie einen regulären Ausdruck für diesen. Schneiden Sie das erste Zeichen Ihrer Zeichenfolge als Teilzeichenfolge ab und passen Sie es an.

if(g.substring(0, 1).matches("[a-h]") { 
    // logic 
} 
4

Eine andere Möglichkeit, es zu tun:

if(Array.asList("abcdefgh".toCharArray()).contains(g.charAt(0))) 
{ 
    //Logic 
} 
+2

Ich würde eine 'Set' zu einer' List' bevorzugen, da ein 'Set' konstanten Zeitzugriff für' contains' (Hash-basiert) hat. – Makoto

+0

@Makoto Wahr, aber wie konvertiert man eine 'String' in' Set', ohne sie in eine 'List' zu konvertieren? Ich glaube, wir müssen unsere eigene Methode dazu schreiben. – hemanth

+1

Alles, was ich sage, ist, dass du den letzten Schritt verpasst hast - wenn du es in ein 'Set' verwandelst, wärest du etwas besser. Aber dann kommen Sie auf die Frage nach der Menge an Arbeit, die tatsächlich benötigt wird, um etwas zu tun, das ziemlich trivial ist und keine großen Datenmengen darstellt. Oder du könntest etwas mit Guava machen und 'Sets.newHashSet ('a', 'b', 'c', 'd', 'e', ​​'f', 'g', 'h') benutzen. g.charAt (0)) '. – Makoto

7

Eine Variation Hemanth Antwort:

if("abcdefgh".contains(g.substring(0,1))) do_something(); 

oder

if("abcdefgh".indexOf(g.charAt(0)) >= 0) do_something(); 
+0

I graben - scheint klar und prägnant. – user2864740

Verwandte Themen