Java 有 replace() 和 replaceAll() 方法可以用给定的新模式替换字符串的部分/序列。该函数的内部是如何工作的?如果我必须编写一个函数来输入字符串、OldPattern、NewPattern 并在不使用 RegEx的情况下递归地用NewPattern 替换每次出现的 OldPattern怎么办?我已经使用 String 输入的迭代完成了以下代码,它似乎可以工作。如果输入是字符数组而不是字符串怎么办?
public String replaceOld(String aInput, String aOldPattern, String aNewPattern)
{
if ( aOldPattern.equals("") ) {
throw new IllegalArgumentException("Old pattern must have content.");
}
final StringBuffer result = new StringBuffer();
int startIdx = 0;
int idxOld = 0;
while ((idxOld = aInput.indexOf(aOldPattern, startIdx)) >= 0) {
result.append( aInput.substring(startIdx, idxOld) );
result.append( aNewPattern );
//reset the startIdx to just after the current match, to see
//if there are any further matches
startIdx = idxOld + aOldPattern.length();
}
//the final chunk will go to the end of aInput
result.append( aInput.substring(startIdx) );
return result.toString();
}