我想从点(a,b)中取一部分字符串,并将字符串中的给定值替换为'X'。Java更改特定字符的部分字符串
例如:如果字符串是ABC123
而且switch(3,5)
被调用,它会将其更改为ABCXXX
。
到目前为止,我有:
public void switch(int p1, int p2)
{
String substring = myCode.substring(p1,p2-1);
}
我很失落....感谢您的帮助!
我想从点(a,b)中取一部分字符串,并将字符串中的给定值替换为'X'。Java更改特定字符的部分字符串
例如:如果字符串是ABC123
而且switch(3,5)
被调用,它会将其更改为ABCXXX
。
到目前为止,我有:
public void switch(int p1, int p2)
{
String substring = myCode.substring(p1,p2-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);
}
}
我明白这一点,但这种方法对于一个对象,只能有两个参数(INT,INT)。我想要替换的子字符串来自另一个类中创建的对象。 – user1729448
这听起来像你试图更新引用而不是修改实际的字符串。在这个例子中,不是创建一个新的'替换字符串',而是'test = replaceRange(test,3,8)'这会更新你的引用。所以,你的方法可能只取一'start'和'end'变量,此时你可以做'myVar的= replaceRange(myVar的,开始,结束);'。 – Joe
谢谢...我得到它的工作 – user1729448
只需为左侧和右侧部分(您想要保留的)执行两个子字符串,然后用适当数量的X连接它们。
试试这个:
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));
}
}
有几个步骤,可以帮助:
str.substring(0,p1);
)str.substring(p2,str.length());
)String output = firstPart + addedChars + secondPart;
)使用StringBuilder
及其replace(int start, int end, String str)
方法
一次偶然的机会,这是家庭作业吗? – Azulflame
XXX部分或返回的单词应该是预先定义的单词吗?它应该始终是XXX,或者有时是XYZ或WXY? – Heskja
你不能给你的方法命名'switch'。这是Java中的保留关键字 –