2013-06-16 2 views
1

"."을 "\ n \ n"으로 바꾸려고 시도하지만 작동하지 않습니다. 다음 코드를 사용합니다 :"."을 Android의 문자열에서 " n n"으로 바꾸십시오.

   text=text.replace(". ","\n\n"); 

결과는 각 줄에 단어의 마지막 문자가없는 모든 단어입니다. 나는이 점에서 어떤 점을 의미하는 점을 읽었지 만, 실제로 어떻게 그 점을 참조 할 수 있습니까?

입력 예 : "Hello World」의 출력 예 : 지옥 세계

여기 뭔가 비린내가

+1

시도 e. \로 기호. 나는 생각한다. – Lingviston

+0

"각 줄에 단어의 마지막 글자가없는 모든 단어"<- non capisco niente ... 예제를 줄 수 있습니까? – fge

+0

@Lingviston trap ...'.replace()'는 "형제", ".replaceFirst()"및 ".replaceAll()'do do – fge

답변

1

감사합니다; textString이 아니거나 .replace() 이외의 다른 문자 (.replaceAll()?) 또는 Android의 .replace()이 버그입니다.

그리고 솔직히 Android 개발자가 그러한 간과를했는지 의심 스럽습니다.

Javadoc for String#replace()

말한다 :

지정된 리터럴 치환 순서 리터럴 표적 서열 일치하는 문자열의 각 부분 문자열을 대체. 정규 표현식에 사용합니까 [강조 광산]

의 형제 방법과는 달리

(.replaceFirst().replaceAll()), .replace()하지 않습니다 (내부적으로는 적어도 오라클의 JDK에, Pattern를 사용 않는다는 사실은 [*]입니다 문제는 아닙니다.)

따라서 실제적으로 .replace()을 사용하고 결과를 얻는다면 이것은 Android의 버그입니다. 이 경우, 같은 (테스트되지 않은), 대안을 시도 : 당신은 아마도 잘못된 코드를 게시 한

text=text.replaceAll(". ", "\n\n"); 

를 사용하는 경우

public static String realStringReplace(final String victim, final String target, 
    final String replacement) 
{ 

    final int skip = target.length(); 
    final StringBuilder sb = new StringBuilder(victim.length()); 

    String tmp = victim; 
    int index; 

    while (!tmp.isEmpty()) { 
     index = tmp.indexOf(target); 
     if (index == -1) 
      break; 
     sb.append(tmp.subString(0, index)).append(replacement); 
     tmp = tmp.subString(index + skip); 
    } 

    return sb.append(tmp).toString(); 
} 
+0

Android 코드 기반에 여전히 주요한 버그가있을 확률이 0입니다. 사실, 처음부터 거의 존재할 확률은 거의 0입니다. –

+0

@StephenC 동의합니다; 그리고 뭐? – fge

+0

질문에 버그가 있습니다. 그는 우리에게 잘못된 코드를 주거나 그가 어떻게 생각/주장 하는지를 행동하지 않습니다. 대부분 이전의 것 같습니다. –

0

요점은 모든 문자를 의미하며,이 경우에 시도 이 하나 ESCAP에

이상한 일이 줄 당신이 게시 한 라인에 해당한다는 것입니다
text=text.replaceAll("\\. ", "\n\n"); 

..

관련 문제