标题:自己写的字符串替换方法中的问题
取消只看楼主
xu2738461746
Rank: 2
等 级:论坛游民
威 望:1
帖 子:39
专家分:70
注 册:2014-9-22
结帖率:60%
 问题点数:0 回复次数:0 
自己写的字符串替换方法中的问题
我最近学到字符串操作,遇到字符串替换的方法,我自己写了一个,但是达不到要求,希望大神解惑!!感激不尽。
程序代码:
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;
    }
}
搜索更多相关主题的帖子: address 字符串 
2015-11-23 20:51



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459519-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.092678 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved