2017-05-09 2 views
-1

에 나는 질문이 있습니다. 그러나 이것은 효과가 없습니다. "Operator ||는 'java.lang.String', 'java.land.String'"에 적용 할 수 없습니다.문자열 ||</p> <pre><code>int index = abc.indexOf("def"||"ghi"); </code></pre> <p>내가 "DEF"검색 또는 "GHI"을 "ABC"문자열에 위의 코드를 시도 : 같이 IndexOf

어떻게 문제를 해결할 수 있습니까?

+1

"abc"문자열에''def ''AND''ghi "'가 모두 포함되어있을 때 당신은 무엇을 기대합니까? 더 낮은 지수? ghi보다는 def의 색인? –

답변

4

컴파일러에서 설명한대로 || 조건부 연산자가 잘못 사용되고 있습니다.

당신이 원하는 무엇인가 :

int index = abc.contains("def") ? abc.indexOf("def"): 
      abc.contains("ghi")? abc.indexOf("ghi"): -1; 

if(index != -1){ 
    //do someting 
} 
+1

도움 주셔서 대단히 감사합니다! 이 작동합니다. 당신의 대답을 확인하겠습니다. 6 분 안에 받아 들일 수있어. – android

0
int index = abc.indexOf("def"); 
if (index == -1) { 
    index = abc.indexOf("ghi"); 
} else { 
    // something else 
} 
0

또한 다음과 같이 Matcher 클래스를 사용하여 얻을 수 있습니다

Pattern pattern = Pattern.compile("(def)|(ghi)"); 
Matcher matcher = pattern.matcher(abc); 

int index; 
if (matcher.find()) { 
    index = matcher.start(); 
} else { 
    index = -1; 
} 

은 기본적으로 당신이 순서를 일치하는 특정 정규식 패턴을 컴파일 당신은 일치하길 원합니다. matcher.find()은 패턴의 첫 번째 항목을 찾고 찾으면 matcher.start()을 사용하여 일치하는 패턴의 시작 색인을 가져올 수 있습니다.