[Java] 문자열이 여러 접두사 중 하나로 시작하는지 확인하는 방법?


Answers

이미 제시된 솔루션 외에도 Apache Commons Lang 라이브러리를 사용할 수 있습니다.

if(StringUtils.startsWithAny(newStr4, new String[] {"Mon","Tues",...})) {
  //whatever
}
Question

Ive의 if 문은 다음과 같습니다.

String newStr4 = strr.split("2012")[0];
if(newStr4.startsWith("Mon"))
str4.add(newStr4);

나는 startsWith 'Mon' 'Tuesday'Weds ''Thrus ''Friday '등을 포함 시키길 원합니다. 문자열을 사용할 때 이것에 대한 간단한 방법이 있습니까? 나는 '||' 그러나 그것은 작동하지 않았다 ...

감사!




List 및 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 ...
}



간단한 해결책은 다음과 같습니다.

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)) {
    // ...
}



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)) {



Links