注册 登录
编程论坛 JAVA论坛

自己写的字符串替换方法中的问题

xu2738461746 发布于 2015-11-23 20:51, 712 次点击
我最近学到字符串操作,遇到字符串替换的方法,我自己写了一个,但是达不到要求,希望大神解惑!!感激不尽。
程序代码:
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;
    }
}
0 回复
1