나는하기 위해 정규 표현식을 작성하려고 : 각 대문자 사이에 공백을 추가하는 방법은 무엇입니까?
- 각 대문자 사이에 공백을 추가합니다.
- 모든 숫자를 제거하십시오.
ClassNameOne839
, 나는 텍스트 싶어 :
나는 텍스트가 Class Name One
그것을 할 라이브러리 기능이 있습니다를? 또는 정규식?
나는하기 위해 정규 표현식을 작성하려고 : 각 대문자 사이에 공백을 추가하는 방법은 무엇입니까?
ClassNameOne839
, 나는 텍스트 싶어 : 나는 텍스트가 Class Name One
그것을 할 라이브러리 기능이 있습니다를? 또는 정규식?
이 같은 replaceAll()
통화의 조합을 사용할 수 있습니다
String text = "ClassNameOne839";
String cleanText = text.replaceAll("\\d+", "").replaceAll("(.)([A-Z])", "$1 $2");
첫 번째는 모든 숫자를 제거하고 String
의 시작 부분이 아닌 모든 대문자 앞에 공백을 추가합니다. $1
및 $2
은 정규식의 그룹의 첫 번째 및 두 번째 그룹에 대한 참조입니다.
정규 표현식 [A-Z][a-z]+(?=[A-Z\s\b0-9])
은 대문자와 공백 문자 또는 숫자가 뒤 따르는 대문자와 일치합니다. 간단하게 뒤에 공백 행에 각 결과를 인쇄하면 설정하고
편집 : 이것은 당연히 당신의 대문자 이름이 이상한 문자를 포함하지 않는 것이 주어, 사용이 같을 것입니다 :
Matcher matcher = Pattern.compile("[A-Z][a-z]+(?=[A-Z\s\b0-9])").matcher(input);
while(matcher.find()) {
string = string + matcher.group();
}
Sytem.out.println(string);
String result = "ClassName399".replaceAll("\\d", "").replaceAll("([A-Z])", "$1 ");
첫 번째 표현식은 문자열 (\\d
)의 모든 정수를 감지하고 삭제되며, 두 번째는 (범위 연산자 []
를 사용하여) 모든 대문자를 검색 한 다음 $1
을 발견 무엇을 소요하고 뒤에 공백을 추가 그것.
정규 표현식에 대한 자세한 내용은 Java Pattern 클래스를 참조하십시오.
cleanText = StringUtils.join(StringUtils.splitByCharacterTypeCamelCase(in.replaceAll("\\d+", "")), " ");
이 regexps '에보다 빠르게해야합니다이 하나를 시도 )
org.apache.commons.lang.StringUtils.splitByCharacterTypeCamelCase
는 당신이 필요로하는 거의 모든 것을 않습니다.
나는 거기에 대한 라이브러리가 있는지 의심 스럽다. 정규 표현식을 작성하려고하면 우리가 당신을 도울 수 –
중복 가능한 http://stackoverflow.com/q/272633/2006839 – Lakshmi
String s = MyDocumentFileIsHere; 문자열 textWithSpace = s.replaceAll ("(.) ([A-Z])", "$ 1 $ 2"); holder.titleTxt.setText (textWithSpace); – Faakhir