2016-09-07 42 views
1

我正在努力如何實際執行此操作。說我有這個字符串Java:用索引中的字符串中的子字符串替換特定字符

「這Str1ng i5的樂趣」

我想用「一」及5「十一五」

「這StrOneng iFive好玩」

替換「1」

我試圖循環徹底的字符串並手動替換它們,但計數已關閉。我也曾嘗試使用列表,數組,StringBuilder的,等等,但我不能得到它的工作:

char[] stringAsCharArray = inputString.toCharArray(); 
ArrayList<Character> charArraylist = new ArrayList<Character>(); 

for(char character: stringAsCharArray) { 
    charArraylist.add(character); 
} 

int counter = startPosition; 

while(counter < endPosition) { 
    char temp = charArraylist.get(counter); 
    String tempString = Character.toString(temp); 
    if(Character.isDigit(temp)){ 
     char[] tempChars = digits.getDigitString(Integer.parseInt(tempString)).toCharArray(); //convert to number 

     charArraylist.remove(counter); 
     int addCounter = counter; 
     for(char character: tempChars) { 
      charArraylist.add(addCounter, character); 
      addCounter++; 
     } 

     counter += tempChars.length; 
     endPosition += tempChars.length; 
    } 
    counter++; 
} 

我覺得必須有一個簡單的方法在一個字符串的子串來代替單個字符,而不必做所有這些迭代。我錯了嗎?

回答

2

你可以做

string = string.replace("1", "one"); 
  1. 不要使用replaceAll,因爲替換基於正則表達式匹配(因此你必須要小心在模式的特殊字符,在這裏不是問題)。

  2. 儘管名稱不同,replace也取代了全部發生。

  3. 由於字符串是不可變的,所以一定要在某處指定結果值。

1

嘗試以下:

string = string.replace("1", "one"); 
string = string.replace("5", "five"); 

.replace替換給定的字符串指定字符串的所有出現,並且是非常有用的。

相關問題