문자열이 여러 접두사 중 하나로 시작되는지 확인하려면 어떻게 해야 합니까?
다음과 같은 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",...)
지금까지 아무도 언급하지 않았습니다.다음은 예를 제시하겠습니다.
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();
여기서 .starts를 사용할 수 있습니다.또는 .matchs 또는 위에서 언급한 다른 방법을 사용합니다.이렇게 하면 jvm의 기본 로케일을 얻을 수 있습니다.로케일을 항상 전달할 수도 있고(늘인 경우 시스템 로케일로 기본 설정될 수도 있습니다).
이렇게 하면 더 심플하고 깔끔합니다.
let newStr4 = strr.split("2012")[0];
if (['Mon', 'Tues', 'Weds', 'Thurs', 'Friday'].some(word => newStr4.startsWith(word))) {
str4.add(newStr4);
}
if(newStr4.startsWith("Mon") || newStr4.startsWith("Tues") || newStr4.startsWith("Weds") .. etc)
전체를 포함시켜야 합니다.str.startsWith(otherStr)
각 항목에 대해서, 그 이후||
는 부울식(true 또는 false)에서만 작동합니다.
체크할 것이 많은 경우에는 정규 표현과 같이 다른 선택사항이 있지만, 그것들은 더 느리고 복잡한 정규 표현은 일반적으로 읽기 어렵습니다.
day name 약어를 검출하기 위한 정규 표현의 예는 다음과 같습니다.
if(Pattern.matches("Mon|Tues|Wed|Thurs|Fri", stringToCheck)) {
불러stream()
요소 목록이 이미 있는 경우 목록 자체에서 다음을 수행합니다.
List<String> myItems = Arrays.asList("a", "b", "c");
다음과 같이 합니다.
boolean result = myItems.stream().anyMatch(s -> newArg4.startsWith(s));
사용하는 대신Stream.of...
OR을 사용하려고 했다고 했을 때 정확히 어떻게 사용하려고 했습니까?당신의 경우 다음과 같이 해야 합니다.
String newStr4 = strr.split("2012")[0];
if(newStr4.startsWith("Mon") || newStr4.startsWith("Tues")...)
str4.add(newStr4);
언급URL : https://stackoverflow.com/questions/9790584/how-to-check-if-a-string-starts-with-one-of-several-prefixes
'programing' 카테고리의 다른 글
헤더 파일에서 함수를 "외부"로 만들어야 합니까? (0) | 2023.01.04 |
---|---|
Symfony2에서 양식 필드의 기본값을 설정하는 방법 (0) | 2023.01.04 |
Mysqli bind_param을 날짜 및 시간 열과 함께 사용하시겠습니까? (0) | 2023.01.04 |
Java에서 문자열의 하위 문자열 두 번째 항목 찾기 (0) | 2023.01.04 |
Python != 연산 vs "없음" (0) | 2023.01.04 |