2011-03-18 4 views
2

나는 여러 개의 점을 포함하는 문자열을 가지고 있습니다. 때로는 연속적인 점들도 있습니다.점의 연속을 하나의 밑줄로 대체하십시오.

모든 . (도트)을 _ (밑줄)로 바꾸고 싶지만 도트 시퀀스가있는 경우이 또한 하나의 밑줄 만 사용해야합니다.

아이디어가 있으십니까?

나는 자바를 사용하고있다. 정규식 \\.+

. (줄 바꿈 제외) 아무것도 일치하는 정규 표현식 메타 문자 인의

str = str.replaceAll("\\.+","_"); 

See it on Ideone

설명 :

답변

10

당신은 같은 replaceall 방법을 사용할 수 있습니다. 리터럴 .과 일치하기를 원하므로 \으로 탈출합니다. 자바 문자열과 정규 표현식 엔진은 모두 \을 이스케이프 문자로 사용하므로 \\을 사용해야합니다. +은 하나 이상의 수량 기호입니다.

또는 우리가 사용할 수 있습니다 : 문자 클래스가 처리

str = str.replaceAll("[.]+","_"); 

내부 . 때문에 문자 그대로 그것을 탈출이 필요하지 않습니다.

+0

Thx ... 완전히 작동했습니다. D – Sergiu

+1

좋은 답변입니다. @Sergiu는 문제를 해결 한 경우이 대답을 허용 된 것으로 표시 할 수 있음을 잊지 않습니다. – Dunaril

+0

@Dunaril : 나는 그것을 얻은대로 최대한 빨리 답변을 시도했지만 받아 들일 수있게 될 때까지 10 분을 기다려야하고 컴퓨터를 떠나야했습니다. – Sergiu

관련 문제