다음 if 문이 있습니다.
String newStr4 = strr.split("2012")[0];
if (newStr4.startsWith("Mon")) {
str4.add(newStr4);
}
startsWith
Mon
Tues
Weds
Thurs
Friday
등 을 포함하고 싶습니다 . 문자열을 사용할 때 이것에 대한 간단한 방법이 있습니까? 시도 ||
했지만 작동하지 않았습니다.
답변
이것을 의미합니까?
if (newStr4.startsWith("Mon") || newStr4.startsWith("Tues") || ...)
또는 정규식을 사용할 수 있습니다.
if (newStr4.matches("(Mon|Tues|Wed|Thurs|Fri).*"))
답변
이미 제시된 솔루션 외에도 Apache Commons Lang 라이브러리를 사용할 수 있습니다.
if(StringUtils.startsWithAny(newStr4, new String[] {"Mon","Tues",...})) {
//whatever
}
업데이트 : 어떤 시점에서 varargs를 도입하면 이제 호출이 더 간단 해집니다.
StringUtils.startsWithAny(newStr4, "Mon", "Tues",...)
답변
Stream
지금까지 아무도 언급하지 않았 으므로 여기에 있습니다.
if (Stream.of("Mon", "Tues", "Wed", "Thurs", "Fri").anyMatch(s -> newStr4.startsWith(s)))
답변
간단한 해결책은 다음과 같습니다.
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)) {
답변
OR 사용을 시도했다고했을 때 정확히 얼마나 사용하고 사용 하셨나요? 귀하의 경우에는 다음과 같은 작업을 수행해야합니다.
String newStr4 = strr.split("2012")[0];
if(newStr4.startsWith("Mon") || newStr4.startsWith("Tues")...)
str4.add(newStr4);
