2015-01-04 4 views
-2

문자열의 대체 문자를 새 문자열로 대체해야하는 프로그램이 있습니다. 내 말은 ...문자를 Java의 특정 String으로 바꿉니다.

String s1 = "JAVAJAVA";
문자열 s2 = "VA";

출력 :

VA VA VA는 VA (S1)의 서로 다른 인덱스에

캐릭터 S2로 대체되어야한다. StringBulider를 사용하여 시도했지만 더 이상 진행할 수 없습니다. 누군가 제발 나를 도와주세요. 감사

+1

로 문자열 배열을 다시 변환합니다. – xyz

+1

질문을 편집하고이 문제를 해결하려는 시도가 필요합니다. – Pshemo

답변

4

이 시도 :

s1 = s1.replaceAll(".(.)", s2+"$1"); 

설명 : 정규 표현식을 ".(.)" 경기마다 2 개 문자. 두 번째 문자는 "기억 된"(대괄호)이므로 교체 부품 ($1)에서 다시 사용할 수 있습니다.

+0

감사합니다. 어떻게 작동하는지 자세히 설명해 주시겠습니까? 나는. "(.)"및 $ 1 표현식을 구문에서 이해하지 못했습니다. – Dev

+0

이것은 '정규 표현식'이라고하며 텍스트 일치/대체를위한 매우 강력한 메커니즘입니다. 여기를보십시오 http://docs.oracle.com/javase/tutorial/essential/regex/. 점 ('.')은 "모든 문자와 일치"를 나타내는 와일드 카드입니다. F.O는 FOO, FAO, FBO와 일치합니다. '..'는 2 문자의 순서와 일치합니다. 대체 부분의 '$ 1'은 검색 패턴에서 첫 번째 괄호로 묶인 표현식을 의미합니다. 두 번째 문자는 Google 검색 패턴에서 두 번째 점으로 표시됩니다. 따라서 검색 패턴의 두 번째 문자를 대체 패턴으로 "복사"하고 있습니다. – geert3

+0

Ive는 정규 표현식을 이해하려고 시도했으며 나를 괴롭히는 부분은 $ 1 및 (.) 표현식입니다. 내가 쓸 때 .. (.) 그것은 VAvaVAva가 문자열의 두 문자와 일치하므로 출력이된다는 것을 의미합니다. 비슷하게, 만약 내가. (.)를 쓰면 한 글자를 찾고 VAaVAaVAaVAa와 같이 VA로 대체됩니다. 그러나 (.)와 $ 1의 목적을 이해하지 못하고 있습니다. 이 부분을 설명해 주시겠습니까? – Dev

0

다른 간단한 해결책이 될 수 REGEX가 아닌 다른 길을 가고 싶은 경우, 정규식 하나 하나를 선호해야하지만 여기

은 몇 가지 예입니다

1) 분할 문자열 String 클래스 toCharArray() 함수 배열을 CHAR

2))

3 루프

을 실행하여 다른 위치에 새로운 문자를 교체 그냥 문자열을 반복하고 다른 문자를 통해 대체 new String(charArray)

관련 문제