2014-10-20 6 views
2

문자열이 있는데 문자열에서 두 번째 "a"를 "e"로 변경한다고 가정 해보십시오.문자열에서 특정 문자를 변경하십시오.

String elephant = "elaphant"; 

String.replace()를 사용했지만 문자열의 모든 a를 바꿔 "elephent"를 반환했습니다.

elephant.replace("a", "e"); 

이 작업을 수행하는 데 사용할 수있는 루프 또는 방법이 있습니까? 다들 감사 해요.

+0

그것은 정규 표현식으로 수행 할 수있다. 하지만 어떻게 해야할지 모르겠다. 나는 정규 표현식이 그렇게 좋지 않다. – afzalex

+0

@awkwardgiraffe 그것은 항상 두 번째입니까? –

답변

1

첫 번째 문자의 색인을 가져와야합니다.

indexOf 메소드를 사용해보십시오.

int myIndex = elephant.indexOf('a'); 

색인을 얻은 후에는 StringBuilder를 사용하여 값을 대체하십시오. 예 :

+0

이 의견은 내 질문에 대한 대답 이었지만 두 번째 또는 세 번째 발생 색인을 얻으려면 어떻게해야합니까? 아니면 일련의 편지? – wasimsandhu

+0

@awkwardgiraffe 'a'의 첫 번째 항목을 시작 색인으로 사용하면 두 번째 값을 가져 오는 데 관심이있을 때 포함되지 않습니다. 이미 myIndex 변수에 저장된 첫 번째 인덱스가 있으므로 다음과 같은 작업을 수행 할 수 있습니다. int mySecondIndex = elephant.indexOf ("a", myFirstIndex + 1); 물론, 당신이 세 번째를 원한다면, 당신은 같은 접근법을 따르고 두 번째를 출발점으로 사용할 수 있습니다. – RizJa

+0

@RizJa가 도움이됩니다. 고맙습니다! – wasimsandhu

2

문자 배열로 변환하고 원하는 문자를 전환 한 다음 다시 문자열로 변환 할 수 있습니까?

String elephant = "elaphant"; 


int index = -1; 
int count = 0; 

while(count < 2) { 
    index = elephant.indexOf("a", index+1); 
    count++; 
} 
if(index >= 0 && index < elephant.length()) { 
    char[] tmp = elephant.toCharArray(); 
    tmp[index] = "e"; 
    elephant = new String(tmp); 
} 

또는 당신은 모두 StringBuilder

StringBuilder sbTemp = new StringBuilder(elephant); 
sbTmp = sbTmp.replace(index, index+1, "e"); 
elephant = sbTmp.toString(); 
+0

두 번째 방법은 경계 문제를 해결합니다. 귀하의 주먹 접근 방식에 대한 문자열을 할당 할 수 없습니다 문자 배열 –

0

코드를 선호하는 경우 :

String elephant = "elaphant"; 
    //convert the string to array of string 
    String[] sp = elephant.split(""); 
    int countA = 0; 
    boolean seenTwice = false; 
    String result = ""; 
    for (int i = 0; i < sp.length; i++) { 
     //count number of times that a has been seen 
     if (sp[i].equals("a")) { 
      countA++; 
     } 

     // if a has been seen twice and flag seenTwice has not been see 
     if (countA == 2 && !seenTwice) { 
      result += "e"; 
      seenTwice = true; 
     } else { 
      result += sp[i]; 
     } 
    } 

    System.out.println(result); 

출력 :

elaphent 
+0

내가 찾고있는 "코끼리"elaphent "입니다. – wasimsandhu

+0

@awkwardgiraffe 당신은 "나는 그 문자열에서 두번째"a "를"e "로 바꾸고 싶다. : 그래서 나는 당신이 원하는 것을했다. 첫 번째 것을 바꾸고 싶다면, 그것은 제왕이고 나는 나의 대답을 업데이트 할 수있다. –

+0

두 번째 "e"를 "a"로 변경하려고했으나 걱정하지 않아도 이미 대답했습니다. – wasimsandhu

관련 문제