2013-05-20 2 views
2

주어진 텍스트의 각 단어 끝에서 점만 제거하려고합니다. (자바) 예를 들어 :정규식에서 텍스트의 각 단어의 끝에서 점을 제거합니다.

input: java html. .net node.js php. 
output: java html .net node.js php 

감사

+0

지금까지 코드를 게재 할 수 있습니까? –

+0

그리고 무엇을 시도 했습니까? – fge

+2

'.'는 정규 표현식의 특수 문자입니다. 그래서 '\ .'처럼 탈출하십시오. '/ \ w \ ./ gi' –

답변

1
for(String str : input.split(" ")) 
{ 
    if(str.charAt(str.len - 1) == '.') 
     str = str.substr(0, str.len - 2); 

    //do something with str 
} 

가 훨씬 느린 모든 가능한 경우에 나는 정규 표현식을 피할 것.

+4

예제에서 두 개의'.'가 제거되었습니다. – Qtax

+0

*«주어진 텍스트에서 ** 각 단어 **의 끝에서 점만 제거하려고합니다.»* 당신의 대답은 사전에 단어의 분리를 언급해야합니다. – afsantos

+0

@Qtax 아, 어떤 이유로 든 한 단어 입력이라고 가정했습니다. 내가 입력 한 모든 문자열을 통과하는 루프를 추가합니다. – thatidiotguy

3

단어의 당신의 정의에 따라 교체 할 수 : $1

(\w)\.(?!\S) 

합니다. 어떤 단어의 끝에 .을 모두 제거하고 공백이나 문자열의 끝에 오는 것이 좋습니다.

2

당신은 할 수 있습니다 : 당신이 정규 표현식을 사용하려고하는 경우

String repl = "java html. .net node.js php.".replaceAll("\\.(?!\\w)", ""); 

// java html .net node.js php 
+0

@EitanPerkal :이 기능이 도움이 되었습니까? – anubhava

+1

OP 사용 사례에서 테스트를했는데 완벽하게 작동합니다. 내 필요에 맞게 작동합니다. 좋은 대답입니다! –

0

는 Qtax의 답변에 따라 솔루션을 정교 :

String s = "java html. .net node.js php."; 
System.out.println(s); 
s = s.replaceAll("(\\w)\\.(?!\\S)", "$1"); 
System.out.println(s); 

출력 :

java html .net node.js php 
관련 문제