我想從點(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中的保留關鍵字 –