2013-06-14 2 views
0

정규 표현식을 사용하여 특정 반복 문자를 바꿀 수있는 방법이 있습니까?알 수없는 패턴 크기를 문자로 바꾸기

예 :

STR = "앤 nnnn을했다 것"

용액이 될 것이다 :

"ANE를 갖는 N 일"

문자열에 하나 이상의 ch 인스턴스가 두 개 이상있는 경우 서로 옆에있는 aracter를 사용하면 정규 표현식을 모두 하나로 바꿔야합니다.

답변

7

것이 가능하다 :

inputString.replaceAll("(.)\\1+", "$1") 

일치 한 문자 만 캡처로 교체 한 번 이상을 반복을 캡처합니다.

그러나이 방법이 더 빠를 수는 없습니다.

public String removeRepetitions(final String input) 
{ 
    if (input.isEmpty()) 
     return input; 

    final int len = input.length(); 
    final StringBuilder sb = new StringBuilder(length); 

    char current = input.charAt(0); 
    char c; 
    sb.append(current); 

    for (int i = 1; i < len; i++) { 
     c = input.charAt(i); 
     if (c != current) { 
      sb.append(c); 
      current = c; 
     } 
    } 

    return sb.toString(); 
} 
+0

주셔서 감사합니다, 나는이를 수정하고 내 특정 필요를 해결하기 위해 노력할 것입니다을 – diazazar

1

이 2 회 이상 반복 N과 일치해야합니다 : 이러한 것은 또한 간단한 루프를 행할

/n{2,}/ 
+0

저를 위해 저것은 일하지 않았다. 문자열 str = "A_Sommmmething"; \t str = str.replaceAll ("/ m {2,} /", "_"); 똑같은 것을 얻었다. – diazazar

관련 문제