Sonntag, Dezember 15, 2019

Bestimmen Sie, wenn die Zeichenfolge beginnt mit den Buchstaben von A bis I

Habe ich eine einfache java-Zuordnung. Ich brauche, um zu bestimmen, ob ein string beginnt mit dem Buchstaben A bis I. ich weiß, dass ich die Verwendung von string.startsWith(); aber ich will nicht zu schreiben, if(string.startsWith("a")); alle den Weg zum ich, so scheint es, in effiziente. Soll ich mich mit einer Schleife von einer Sorte?

  • Oberen Fall? Kleinbuchstaben? Entweder?
  • Wenn Sie benötigen, zu entsprechen, sowohl groß-und Kleinbuchstaben, check out my post. Mark Byers passt nur zu groß-und wir haben ein paar passende Beiträge Kleinschreibung, nur ein pick (und aktualisieren Sie Ihre Frage-post zu klären, welche es ist, dass Sie wollen).
InformationsquelleAutor Archey | 2011-12-16

6 Kommentare

  1. 27

    Brauchen Sie nicht, reguläre Ausdrücke für diese.

    Versuchen, vorausgesetzt, Sie wollen groß-nur:

    char c = string.charAt(0);
    if (c >= 'A' && c <= 'I') { ... }

    Wenn Sie möchten, eine regex-Lösung können Sie jedoch diese (ideone):

    if (string.matches("^[A-I].*$")) { ... }
    • Okay, das hat funktioniert. aber was genau bedeutet das ^ bedeutet, und .*$ bedeuten? Ich weiß, die [a-i] bedeutet, dass a durch i
    • ich meine, im Fragen, was der ^ und .*$ bedeutet, und warum ich es brauche. Ich mag, alles zu verstehen, da wir noch nicht gelernt haben, diese in meiner informatik-Klasse noch
    • Das heißt, Sie beginnen von string, die . bedeutet ein beliebiges Zeichen, * steht für eine beliebige Anzahl von Zeiten, und $ Ende der Zeile. Also, im Grunde Beginn der Zeile, gefolgt von A-I, gefolgt von irgendein Zeichen 0 oder mehr Male, bis das Ende der Zeile.
    • danke für die Hilfe
    • können Sie akzeptieren seine Antwort, wenn Sie wollen, indem Sie die Häkchen neben den beiden Pfeilen nach oben und unten
  2. 2

    Wie über dieses für die Kürze?

    if (0 <= "ABCDEFGHI".indexOf(string.charAt(0))) {
        //string starts with a character between 'A' and 'I' inclusive
    }
    • Der Kommentar entspricht nicht dem code 😉
    • behoben 🙂
    • Vernünftig, jetzt steckte es in eine Methode und Eine und ich von Parametern.
    • Die obige Bedingung erfüllt ist, indexOf wird einen Wert zurückgeben, der größer als -1, wenn das erste Zeichen innerhalb der Zeichenfolge. Jetzt wird es so handeln, als ob alle Buchstaben akzeptieren BCDEGHI korrekt ist.
    • diese Methode ist natürlich nicht die beste Lösung für einen range-check, die für eine Reihe von Zeichen, wie „AEOIU“, es funktioniert ganz gut.
    • Ich denke, du findest den code korrigieren, einschließlich der 'A', (0 <= 0) == true 🙂

  3. 1
    char c=string.toLowerCase().charAt(0);
    if( c >= 'a' && c <= 'i' )
        ...

    Dies macht es einfach, um es als eine Methode:

    public static boolean startsBetween(String s, char lowest, char highest) {
        char c=s.charAt(0);
        c=Character.toLowerCase(c);  //thx refp
        return c >= lowest && c <= highest;
    }

    ist STARK bevorzugt, um alle inline-Lösung. Für den Sieg, Tags als endgültig an und so java-inlines es für Sie und gibt Ihnen bessere Leistung als ein codierter-inline-Lösung als gut.

    • Sie sollten nicht Kleinschreibung wird der gesamte string, überprüfen Sie heraus, wie ich es gelöst in meinem post, ja.. ich weiß; vorzeitige Optimierung 😉
    • Sie sind richtig, es kopiert auch die ganze Sache. Solange es kaputt ist und in einer Methode kann auch den Schritt, um Sie zu brechen in eigenen Variablen.

Kostenlose Online-Tests

Ihre Entwicklerrolle