回答:
これはどういう意味ですか:
if (newStr4.startsWith("Mon") || newStr4.startsWith("Tues") || ...)
または、正規表現を使用することもできます。
if (newStr4.matches("(Mon|Tues|Wed|Thurs|Fri).*"))
Stream
今のところ誰も言及していないので、ここにそれがあります:
if (Stream.of("Mon", "Tues", "Wed", "Thurs", "Fri").anyMatch(s -> newStr4.startsWith(s)))
s -> newStr4.startsWith(s)
するために置き換えることができますnewStr7::startsWith
簡単な解決策は次のとおりです。
if (newStr4.startsWith("Mon") || newStr4.startsWith("Tue") || newStr4.startsWith("Wed"))
// ... you get the idea ...
より優れたソリューションは次のとおりです。
List<String> days = Arrays.asList("SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT");
String day = newStr4.substring(0, 3).toUpperCase();
if (days.contains(day)) {
// ...
}
もちろん、この方法で日付を検出した場合にのみ、プログラムが英語圏の国でのみ役立つことに注意してください。次のことを検討してください。
Set<String> dayNames = Calendar.getInstance()
.getDisplayNames(Calendar.DAY_OF_WEEK,
Calendar.SHORT,
Locale.getDefault())
.keySet();
そこから、.startsWithや.matches、または他の人が上で述べた他の方法を使用できます。このようにして、jvmのデフォルトロケールを取得します。より堅牢にするために、常にロケールを渡すことができます(nullの場合はデフォルトでシステムロケールに渡すこともできます)。
if(newStr4.startsWith("Mon") || newStr4.startsWith("Tues") || newStr4.startsWith("Weds") .. etc)
str.startsWith(otherStr)
各アイテムの全体を含める必要があります。||
ブール式(trueまたはfalse)でのみ機能する。
正規表現など、確認することがたくさんある場合は、他のオプションがあります。遅くなる傾向があり、複雑な正規表現は一般に読みにくくなります。
曜日名の省略形を検出するための正規表現の例は次のとおりです。
if(Pattern.matches("Mon|Tues|Wed|Thurs|Fri", stringToCheck)) {
"Mon||Tues"
ですか?それとも使用しましたnewStr4.startsWith("Mon")||newStr4.startsWith("Tues") ...
か?どちらにしても「うまくいかなかった」と定義してください。