Mam następujące oświadczenie if:
String newStr4 = strr.split("2012")[0];
if (newStr4.startsWith("Mon")) {
str4.add(newStr4);
}
Chcę, aby zawierał startsWith
Mon
Tues
Weds
Thurs
Friday
itd. Czy istnieje prosty sposób na to, gdy używa się ciągów? Próbowałem, ||
ale to nie zadziałało.
java
string
if-statement
FredBones
źródło
źródło
"Mon||Tues"
itp.? Czy użyłeśnewStr4.startsWith("Mon")||newStr4.startsWith("Tues") ...
? Tak czy inaczej, określ „to nie zadziałało”.Odpowiedzi:
Masz na myśli to:
Lub możesz użyć wyrażenia regularnego:
źródło
Oprócz przedstawionych już rozwiązań możesz skorzystać z biblioteki Apache Commons Lang:
Aktualizacja: wprowadzenie w pewnym momencie varargs upraszcza teraz połączenie:
źródło
Nikt do
Stream
tej pory nie wymieniony , więc oto:źródło
s -> newStr4.startsWith(s)
może być zastąpionanewStr7::startsWith
być jaśniejszeProstym rozwiązaniem jest:
Bardziej wyszukanym rozwiązaniem byłoby:
źródło
Oczywiście pamiętaj, że Twój program będzie przydatny tylko w krajach anglojęzycznych, jeśli wykryjesz daty w ten sposób. Warto rozważyć:
Stamtąd możesz użyć .startsWith lub .matches lub jakiejkolwiek innej metody, o której inni wspomnieli powyżej. W ten sposób otrzymujesz domyślne ustawienia regionalne dla jvm. Zawsze możesz przekazać ustawienia regionalne (i może domyślnie ustawić ustawienia regionalne systemu, jeśli są puste), aby były bardziej niezawodne.
źródło
Musisz uwzględnić całość
str.startsWith(otherStr)
dla każdego elementu, ponieważ||
działa tylko z wyrażeniami logicznymi (prawda lub fałsz).Istnieją inne opcje, jeśli masz wiele rzeczy do sprawdzenia, na przykład wyrażenia regularne , ale zwykle są one wolniejsze, a bardziej skomplikowane wyrażenia regularne są na ogół trudniejsze do odczytania.
Przykładowe wyrażenie regularne służące do wykrywania skrótów nazw dni to:
źródło
Kiedy mówisz, że próbowałeś użyć OR, jak dokładnie próbowałeś go użyć? W twoim przypadku będziesz musiał zrobić coś takiego:
źródło