2012-11-05 71 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

的Java String s爲不可變的,不能改變。然而,你可以寫一個方法,返回一個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

這聽起來像你試圖更新引用而不是修改實際的字符串。在這個例子中,不是創建一個新的'替換字符串',而是'test = replaceRange(test,3,8)'這會更新你的引用。所以,你的方法可能只取一'start'和'end'變量,此時你可以做'myVar的= replaceRange(myVar的,開始,結束);'。 – 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

A)不要給他們代碼。爲他們提供完成工作所需的工具。 B)爲問題做適當的格式化(「這是你需要做的,這裏有一種方法來做到這一點:*插入代碼*。這可以通過*插入描述*) – Azulflame

+0

我試過,它的工作,如果他們看到代碼他們可以更好地理解...我通過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)方法