2011-12-15 5 views
0

특수 문자가 포함 된 문자열 (숫자)이 있습니다. 하위 문자열 (숫자로만 구성된)을 검색하고 싶습니다. & 또한 시작 인덱스 & 문자열에서 일치하는 하위 문자열의 끝 인덱스를 검색하고 싶습니다. 예를 들어 : 주요 캐릭터 : (91) -1231212 1231
하위 문자열 검색하기 : 1212어떻게 이것을 Android 용으로 작성할 수 있습니까?

을 현재 내가하지만 1212 대신에이 작업을 수행하려면 다음 코드를 사용하고, 그것을 을 검색했습니다. 다른 경우에는 잘 작동합니다.

String sss0 = "1212"; 
    String sss1 = "(+91)-1231212 1231"; 

    sss0 = sss0.replaceAll("[^\\d]",""); 

    System.out.println("*************************"+sss0); 

    String ptn = "" + sss0.charAt(0); 
    for(int jj=0; jj<sss0.length()-1; jj++){ 

     ptn += "[^" + sss0.charAt(jj) + sss0.charAt(jj+1) + "]*?" + sss0.charAt(jj+1); 

    } 
     System.out.println("ptn: " + ptn); 

    Pattern p300 = Pattern.compile(ptn); 

    Matcher m300 = p300.matcher(sss1); 

    if(m300.find()){ 
     System.out.println("start, stop: " + m300.start() + "," + (m300.end()-1)); 
     System.out.println("substring: " + sss1.substring(m300.start(), m300.end())); 
    } 

도와주세요. 미리 감사드립니다.

+7

9 개의 질문, 0 % 허용 ... 아니요 thanks – SJuan76

+0

간단한 'indexOf()'를 사용하지 않는 이유는 무엇입니까? – fge

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. 실제로 하위 문자열을 검색하는 동안 주 문자열에서 특수 문자를 무시해야합니다. –

답변

0

이 시도 : 또한 문자열의 모든 발행 수를 찾기 위해 루프에서이 넣을 수

int start = sss1.indexOf(sss0); 
if(start != -1) { 
    System.out.println("Start : " + start); 
    System.out.println("End : " + start.length()); //maybe add +1 here depending on what you mean by end index. 
} 

.

0

의사 :

pattern = "" 
foreach char c in sss0: 
    pattern += c + "[^0-9]*" 

found_substring = match(pattern, sss1) 

당신이 건너하고자하는 패턴을 찾고있는 리터럴 문자를 산재 할 수있는 아이디어.

관련 문제