2012-11-05 5 views
5

나는 (a, b) 점에서 문자열의 일부를 가져 와서 문자열의 주어진 값에서 'X'문자로 대체하려고합니다.Java 문자열을 특정 문자로 바꾸기

예 : 문자열이 ABC123이고 switch(3,5) 인 경우이를 ABCXXX으로 변경합니다.

지금까지 내가 가지고 : 어떤 도움

public void switch(int p1, int p2) 
{ 
    String substring = myCode.substring(p1,p2-1); 
} 

내가 매우 손실입니다 .... 감사합니다!

+0

,이 숙제는? – Azulflame

+0

XXX 부분 또는 반환 단어를 사전 정의 된 단어로 사용해야합니까? 항상 XXX 또는 XYZ 또는 WXY 여야합니까? – Heskja

+0

당신의 메소드 이름을'switch' 할 수는 없습니다. 그것은 Java –

답변

1

자바 String의는 불변 변경할 수 없습니다 그들을 넣습니다. 그러나 new String을 반환하는 메서드를 작성할 수 있습니다. A StringBuilder은 빠른 문자열 조작이 가능하므로 익숙해지기 좋은 수업입니다.

의 StringBuilder 문서 : 우연히 http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html

public class StringReplace { 

    public static String replaceRange(String s, int start, int end){ 
     StringBuilder b = new StringBuilder(s); 

     for(int i = start; i <= end; i++) 
      b.setCharAt(i, 'x'); 

     return b.toString(); 
    } 

    public static void main(String[] args){ 
     String test = "mystringtoreplace"; 
     String replaced = replaceRange(test, 3, 8); 
     System.out.println(replaced); 
    } 

} 
+0

이 방법은 이해하지만이 방법은 두 개의 매개 변수 (int, int) 만 가질 수있는 개체에 대한 것입니다. 대체하려고하는 하위 문자열은 다른 클래스에서 만들어진 객체에서 가져옵니다. – user1729448

+0

실제 문자열을 수정하지 않고 참조를 업데이트하려고하는 것 같습니다. 이 예제에서, 새로운'String replaced'를 생성하는 대신에'test = replaceRange (test, 3, 8)'할 수 있습니다. 이것은 참조를 업데이트 할 것입니다. 그래서, 당신의 메소드는'start'와'end' 변수를 취할 수 있습니다.이 시점에서 당신은 myVar = replaceRange (myVar, start, end);를 할 수 있습니다. – Joe

+0

감사합니다 ... 작동하도록했습니다. – user1729448

0

왼손 및 오른손 부분에 대해 두 개의 하위 문자열을 유지 한 다음 (해당 부분을 유지하려는) 적절한 X 수 사이에 연결하십시오.

-1

이 시도 : 도움이 될

public class Sub { 

    public String replaceChar(String str, int x, int y){ 
     String temp = "XXX"; 
     String str1 = ""; 
     str1 = str.substring(x, y+1); 
     str = str.replace(str1, temp); 
     return str; 
    } 

    public static void main(String args[]){ 
     Sub s = new Sub(); 
     System.out.println(s.replaceChar("ABC123", 3, 5)); 
    } 

} 
+0

에 예약 된 키워드입니다.) 그냥 코드를 제공하지 마십시오. 일을 끝내기 위해 필요한 도구를 제공하십시오. B) 질문에 대한 올바른 형식을 지정하십시오 ("여기에 필요한 작업이 있습니다. * 삽입 코드 *. * 설명 삽입 *로 작동합니다.) – Azulflame

+0

시도해 보았습니다. smal snippet에서 그들은 더 잘 이해할 수 있습니다 ... 그리고 저는 Ctrl + K로 코드를 포맷하고 제출했습니다 ... 다른 형식으로 무엇인지 모르겠습니다. – BloodRed

+0

질문이 표시되는 방식으로 서식을 지정합니다. – Azulflame

-1

몇 단계 :

  1. 당신은 유지하려는 문자열의 왼쪽을 확인 당신이
  2. 을 변경할 필요가 문자의 수를 확인을 (str.substring(0,p1);)
  3. 보관할 문자열의 오른쪽을 확인하십시오 (str.substring(p2,str.length());)
  4. 함께 (String output = firstPart + addedChars + secondPart;)
1

사용 StringBuilder하고 replace(int start, int end, String str) 방법

관련 문제