自己写的字符串替换方法中的问题
我最近学到字符串操作,遇到字符串替换的方法,我自己写了一个,但是达不到要求,希望大神解惑!!感激不尽。程序代码:
public class TestNewString { public static void main(String[] args){ String str = "address"; String newStr = oldToNew(str,"a","Abb"); System.out.println(newStr); } static String oldToNew(String str,String oldString,String newString){ //判断新字符串的长度。 int newLen; //新字符串长度; String newStr = null;//新字符串; /** * 计算新字符串的长度; */ if(oldString.length() >= newString.length()){ newLen = str.length() - (oldString.length() - newString.length()); }else{ newLen = str.length() + (newString.length() - oldString.length()); } /** * 将旧字符串中要替换的部分换位新字符串; */ for(int i = 0;i < str.length();i++){ int startNum = i;//开始替换的位置 int endNum = startNum + newString.length();//替换的长度 int endN = startNum + oldString.length();//替换完后开始拼接原字符串的位置 /** * 通过比较获取要替换的部位; */ char[] ch = new char[oldString.length()]; for(int j = 0;j < oldString.length();j++){ ch[j] = str.charAt(j + i); } String s = new String(ch); /** * 如果有与要替换的字符串相同的字符串则实现替换 */ if(s.equals(oldString)){//判断原字符串中是否含有目标字符串 //实现替换 char newCh[] = new char[newLen];//新字符串中的元素 for(int m = 0;m < newLen;m++){ for(int b = 0;b < newString.length();b++){ if(m < startNum){ newCh[m] = str.charAt(m); }else if(m == startNum){ newCh[m] = newString.charAt(b); if(startNum < endNum){ startNum++; } }else{ newCh[m] = str.charAt(endN); if(endN < str.length()){ endN++; } } } } newStr = new String(newCh); }else{ newStr = str; } } return newStr; } }