답변:
이것을 의미합니까?
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의 기본 로케일을 얻을 수 있습니다. 더 강력하게하기 위해 항상 로케일을 전달할 수 있습니다 (널인 경우 시스템 로케일로 기본 설정).
if(newStr4.startsWith("Mon") || newStr4.startsWith("Tues") || newStr4.startsWith("Weds") .. etc)
부울 표현식 (true 또는 false)에서만 작동 str.startsWith(otherStr)하므로 각 항목에 대해 전체를 포함해야합니다 ||.
정규 표현식 과 같이 확인해야 할 사항이 많은 경우 다른 옵션이 있지만 더 느리고 복잡한 정규 표현식은 일반적으로 읽기가 더 어렵습니다.
요일 약어를 감지하는 정규 표현식의 예는 다음과 같습니다.
if(Pattern.matches("Mon|Tues|Wed|Thurs|Fri", stringToCheck)) {
"Mon||Tues"등을 의미 합니까? 아니면 사용newStr4.startsWith("Mon")||newStr4.startsWith("Tues") ...했습니까? 어느 쪽이든 "작동하지 않음"을 정의하십시오.