2012-06-25 3 views
2

현재 문자열의 배열이 있는데, 각 배열의 길이는 무작위입니다. 모든 "A"를 "X"로 바꾸고 싶습니다. 어떻게해야할까요?Java의 문자열에서 문자 대체

예 :

String str = "ABCDEFGAZYXW";

나는 문자열이 "XBCDEFGXZYXW"가되고 싶다. 내가 사용하려고 :

str.replaceAll("A", "X");

을하지만 문자열을 변경하지 않습니다. 어떤 도움이라도 대단히 감사합니다!

답변

4

str = str.replaceAll("A", "X");

replaceAll 방법은 문자열을 변경 (자바 문자열 불변)하지만 String 새로운 객체를 생성하고, 함수 호출의 결과로서 리턴하지 않는다. 이 방법으로 이전 객체가 변경되지 않고 단순히 참조되지 않는 새 객체에 대한 참조를 변경합니다.

+0

와우 감사합니다! 매우 빠른 응답도! – Raymosrunerx

+0

당신을 환영합니다;) –

2

당신은 결과, 즉 할당해야합니다 :

str = str.replaceAll("A", "X"); 
2

는 시도를 STR = str.replaceAll ("A", "X");

문자열은 Java에서 변경할 수 없습니다. 자바

3

문자열은 replaceAll()를 사용하여 올바른 궤도에있어, 불변,하지만 당신은 수정 괜찮다면 당신은 (원본 문자열에, 예를 들어, 어딘가 메소드에 의해 반환되는 새로운 문자열을 저장해야합니다 그것). 내 말은 다음과 같습니다

String str = "ABCDEFGAZYXW"; 
str = str.replaceAll("A", "X"); // notice the assignment! 
3

단지 서로 하나의 문자를 대체 사용할 수 replace :

str = str.replace('A', 'X'); 

으로 많은 사람들이 이미 String.replaceAll도 작동을 게시,하지만 당신은 먼저 알고 있어야합니다 이 메서드의 매개 변수는 정규 표현식입니다. 당신이 인식하지 못하는 경우, 그것은 당신이 모든 경우에 예상대로 작동하지 않을 수 있습니다 :

// Replace '.' with 'X'. 
str = str.replaceAll(".", "X"); // Oops! This gives "XXXXXXXXXXXX" 
+0

참고로, "." "X",'str = str.replaceAll ("\\.", "X");'를 사용하면됩니다. 구두점과 같은 정규 표현식은 문자 앞에 찍히는 백 슬래시를 문자 그대로 ("모든 문자"의 경우 ".", "줄의 끝"의 경우 "$"와 같이 메타 문자로 사용하는 것이 아니라) 원한다면 사용합니다. – cHao

0

을 기본적으로 완전히 대체하기 함수는 두 개의 매개 변수를 취할 것, 하나는 제거 할 문자열이고 두 번째는 새로운 문자열 당신은 대체하기를 원하며 리턴 타입은 String이다.

교체 후 새 문자열이 반환됩니다.

여기에서는이 메서드를 호출하지만 변수에 새 값을 저장하지 않습니다. 당신은 교체하거나 그래서 코드에 당신이 당신의 문자열 객체로 저장해야이

String string = "My Old String with Old value"; 
System.out.println(string.replaceAll("Old", "New")); 
//Or 
string = string.replaceAll("Old", "New"); 
System.out.println(string); 

처럼 인쇄 할 수 있습니다.

str = str.replaceAll("A", "X");