2012-11-05 124 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)方法