2016-09-07 67 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替换给定的字符串指定字符串的所有出现,并且是非常有用的。

相关问题