문자열이 여러 접두사 중 하나로 시작하는지 확인하는 방법은 무엇입니까?
다음과 같은 if 문이 있습니다.
String newStr4 = strr.split("2012")[0];
if (newStr4.startsWith("Mon")) {
str4.add(newStr4);
}
startsWith
Mon
Tues
Weds
Thrus
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
}
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)) {
목록 및 startsWithAny () 사용
솔루션 중에는 모든 접두사를 List 에 넣은 다음 StringUtils startsWithAny () 메서드를 사용하여 검사를 수행하십시오.
List<String> prefixesList = Arrays.asList("Mon", "Tues", "Wed", "Thurs", "Fri");
if(StringUtils.startsWithAny(newStr4, prefixesList.toArray(new String[0])))
{
// Your code goes here ...
}
OR 사용을 시도했다고했을 때 정확히 얼마나 사용하고 사용 하셨나요? 귀하의 경우에는 다음과 같은 작업을 수행해야합니다.
String newStr4 = strr.split("2012")[0];
if(newStr4.startsWith("Mon") || newStr4.startsWith("Tues")...)
str4.add(newStr4);
'Programming' 카테고리의 다른 글
Java에서 리플렉션을 통해 개인 필드에 액세스 할 수 있습니까? (0) | 2020.08.27 |
---|---|
SQL 연결이 열려 있는지 또는 닫혀 있는지 확인 (0) | 2020.08.27 |
Django Rest Framework는 csrf를 제거합니다. (0) | 2020.08.27 |
Java 가비지 콜렉션 로그 메시지 (0) | 2020.08.27 |
jstl의 foreach 루프에서 인덱스 값을 얻는 방법 (0) | 2020.08.27 |