2013-05-22 4 views
40

의 문자열을 대체 할 수 있습니다. 나는 그런 것을하려고 노력했다 :어떻게이 같은 문자열 <code>string</code>이 가정 문자열

string.replaceAll("abcd","dddd"); 

그것은 작동하지 않는다. 어떤 제안?

편집 : 구체적으로 말하자면, 저는 Java로 작업 중이며 HTML 문서, 구체적으로는 <script> 태그 사이의 내용을 구문 분석하려고합니다. 이 콘텐츠를 문자열로 구문 분석하는 방법을 이미 알아 냈습니다.

if(tag instanceof ScriptTag){ 
     if(((ScriptTag) tag).getStringText().contains("DataVideo")){ 
      String tagText = ((ScriptTag)tag).getStringText(); 
     } 
} 

이제 하위 문자열을 다른 문자열로 대체하는 방법을 찾아야합니다.

+2

"작동하지 않습니까?"보다 구체적 일 수 있습니까? 우선,이 언어는 무엇입니까? 오류가 있습니까? 예기치 않은 일이 발생 했습니까? 일반적으로 성취하려는 것은 무엇입니까? –

답변

4

정규식에 의해 나는 이것이 자바, 대체 문자열로 새 문자열을 반환 replaceAll() 방법이라고 생각하므로이 시도 :

String teste = "abcd=0; efgh=1"; 

String teste2 = teste.replaceAll("abcd", "dddd"); 

System.out.println(teste2); 

출력 : 자바 스크립트에서

dddd=0; efgh=1 
+0

원본 답변에 하나를 더한 것입니다. – HoldOffHunger

0

:

var str = "abcdaaaaaabcdaabbccddabcd"; 
document.write(str.replace(/(abcd)/g,"----")); 
//example output: ----aaaaa----aabbccdd---- 

다른 언어로도 비슷한 것입니다. 전역 일치를 사용하도록하십시오.

0

대체하거나 잘못된 것을 교체 한 후에는 할당하지 않은 것일 수 있습니다. 시도 :

String haystack = "abcd=0; efgh=1"; 
String result = haystack.replaceAll("abcd","dddd"); 
57

당신은 replaceAll() 방법의 반환 값을 사용해야합니다. replaceAll()은 현재 문자열의 문자를 대체하지 않으므로 대체 문자열로 새 문자열을 반환합니다.

  • String 오브젝트는 작성 후에 그 값을 변경할 수 없습니다, 변경할 수 있습니다.
  • regex가 필요하지 않은 경우 replaceAll() 대신 replace()를 사용할 수 있습니다.
String str = "abcd=0; efgh=1"; 
    String replacedStr = str.replaceAll("abcd", "dddd"); 

    System.out.println(str); 
    System.out.println(replacedStr); 

출력

abcd=0; efgh=1 
dddd=0; efgh=1 
+0

replaceAll은 정규 표현식을 기대합니다. 공백 괄호 "()"를 바꾸면 올바르게 이스케이프 할 때까지 정규식 오류가 발생합니다. str.replaceAll ("\\\ (\\\)", ""); – HoldOffHunger

9

2 일 당신이주의해야한다 : 자바에서

  1. 문자열은 불변에 그래서 당신은 다른에 thereplace 메서드 호출의 반환 값을 저장해야 끈.
  2. 여기에 정규식이 필요하지는 않지만 String#replace(String)에 대한 간단한 호출만으로 작업을 수행 할 수 있습니다.

그래서 그냥이 코드를 사용 : 새 값을 할당 할 수있는 변수를 만들 필요가

String replaced = string.replace("abcd", "dddd"); 
8

을 방법이 같은 :

String str = string.replaceAll("abcd","dddd"); 
2

주의가 백 슬래시 (\)와 달러 대체 문자열의 부호 ($)는 결과가 리터럴 대체 문자열로 취급되는 경우와 다를 수 있습니다. Matcher.replaceAll을 참조하십시오. 원하는 경우 java.util.regex.Matcher.quoteReplacement를 사용하여 이러한 문자의 특별한 의미를 억제하십시오.

(javadoc)

관련 문제