Vereinfachen Sie mehrere boolesche Bedingungen Java [Duplikat]
-
21-12-2019 - |
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?
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