2013-11-24 2 views
-1

나는 string을 가지고 있으며 첫 번째 쉼표, 공백 또는 마침표를 가져 오려고합니다.안드로이드가 곧 근처에 쉼표, 공백 또는 마침표를 문자열로 가져옵니다.

  int word = title.indexOf(" ", idx); 

이렇게하면 첫 번째 공백이 생깁니다. 어떻게 공백, 쉼표 또는 마침표를 사용하여 첫 번째 공백을 만들 수 있습니까? ||을 사용해 보았지만 작동하지 않았습니다.

ex.

  int word = title.indexOf(" " || "," || ".", idx); 

답변

4

공백, 쉼표 또는 점이나의 ​​선두로부터의 인덱스를 가져옵니다 것을 할 수 -1 그들 중 누구도 찾을 수 없습니다 경우 :

Pattern pattern = Pattern.compile("[ ,\\.]"); 
Matcher matcher = pattern.matcher(title); 
int index = matcher.find() ? matcher.start() : -1; 

참고는 프리 - 수 패턴을 컴파일하고 원하는만큼 자주 다시 사용하십시오.

는 하나의 단어로 텍스트를 중단하려는 경우, 당신은/대신 BreakIterator를 사용해야 할 수 http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

참고도 참조!

+0

문자열의 시작 부분에서 가장 가까운 공백 등을 찾는 것이 좋지만 문제입니다. 특정 시작 부분부터 어떻게 만들 수 있습니까 (문자열의 4 번째 문자와 유사)? –

+0

인덱스 n에서 시작하려면 matcher.find (n)을 대신 호출하십시오. – isnot2bad

+0

한 가지 더, 분리 기호 무엇입니까? 나는 그것을 얻을 수 없었다. 그것은 \\입니까? 좋아요. 만약 내가 어떻게 새로운 것들을 추가하고 싶습니까? x를 추가하는 방법? –

1

당신이하고있는 일은 유효한 자바 구문이 아닙니다. indexOf() 메서드를 공백, 쉼표 및 마침표와 함께 사용하고이 3 개의 값 중 가장 작은 값을 결정합니다.

int a = title.indexOf(" ", idx); 
int b = title.indexof(",", idx); 
int c = title.indexOf(".", idx); 

그러면 가장 작은 것을 결정하십시오.

빠른 방법은 독자적인 방법을 작성하는 것입니다. 뒤에서 indexOf는 모든 문자를 반복합니다. 당신은 자신이 직접

public static int findFirstOccurrence(String s) { 
    for (int i = 0; i < s.length(); i++) { 
     if (s.charAt(i) == ',' || // period/space) { 
      return i; 
     } 
    } 
    return -1; 
} 
+0

같은 부울 작업을 수행하는 데 사용할 수있는 조건 OR 연산자) { –

+0

코드를 읽지 않고 복사하여 복사 할 수는 없습니다. 모든 조건을 쓰지 않고 대신 주석으로 대체하여 시간/공간을 절약했습니다. – Kon

1

불행히도 indexOf에 문자 배열을 사용할 수 없으며 indexOf을 세 번 호출해야하거나 regex과 일치 할 수 있습니다. 제공 한 코드는 잘못된 java 구문입니다. 경우 (s.charAt (I) == ','|| // 기간/공간 :이 기호 ||은 내가이 줄에서 오류가 발생

if(x || y) 
관련 문제