Frage

Wie würden Sie all diese Bedingungen vereinfachen?

String s = "The wold is big"

if(s.contains("is") || s.contains("are") || s.contains("was") || s.contains("were")) 
{ 
    return s;
}

Gibt es eine Möglichkeit, all diese Bedingungen zu vereinfachen, da ich mehrere solcher Fälle prüfen muss?

War es hilfreich?

Lösung

Ich würde dafür eine Utility-Methode schreiben:

public static boolean containsAny(String s, String... words) {
    for (String word : words) {
        if (s.contains(word))
            return true;
    }
    return false;
}

Und nun:

if (containsAny(s, "is", "are", "was", "were")) {...}

Java 8-Alternative:

if (Arrays.asList("is", "are", "was", "were").stream().anyMatch(s::contains)) {...}

Andere Tipps

Sie können verwenden Regex hierfür verwenden Sie die matches Methode der String

Probe:

String s = "The wold is big";

    if (s.matches("(.*)(is|are|was|were)(.*)")) {
        System.out.println("lawl");
    }

Einen schnelleren Weg gibt es eigentlich nicht.Nur wenn Sie viele davon haben, wäre es sauberer, sie in einem Array zu platzieren und über das Array zu laufen.

Auch hier beantwortet:Testen Sie, ob eine Zeichenfolge eine der Zeichenfolgen aus einem Array enthält

Sie können zur Überprüfung ein Wertearray übergeben:

public boolean Contains(String[] list, String elem) {
    for (String s: list){
        if(elem.contains(s)) {
            return true;
        }
    }
    return false;
}

String s = "The wold is big"
String[] conditions = {"is","are","was","were"}; 

if(Contains(conditions,s)) 
{ 
    return s;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top