首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 高手帮帮忙~自己写个replace()方法呗~~~~ [已结贴,结贴人:dick_er]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 10:27:02 楼主
    老师布置的一个作业~~ 有兴趣的做下
      自己写方法实现replace的功能~
      本来以为很简单 偶用String 截出前半部分和后半部分然后连接起来 ~但做起来真的很麻烦~
      ---没办法了  看看这边有没高手 帮帮忙~  谢 啊 ~~
    1  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 10:31:041楼 得分:0
    这是Java中replace的源代码:
    Java code
    public String replace(char oldChar, char newChar) { if (oldChar != newChar) { int len = count; int i = -1; char[] val = value; /* avoid getfield opcode */ int off = offset; /* avoid getfield opcode */ while (++i < len) { if (val[off + i] == oldChar) { break; } } if (i < len) { char buf[] = new char[len]; for (int j = 0 ; j < i ; j++) { buf[j] = val[off+j]; } while (i < len) { char c = val[off + i]; buf[i] = (c == oldChar) ? newChar : c; i++; } return new String(0, len, buf); } } return this; }

    参考一下~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 12:27:412楼 得分:0
    有点看不懂~count 和 value 是变量?
    还有 是写 public String replace(String oldC, String newC) 参数是两个String类的 那个方法
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zapdos
    • 等级:
    发表于:2008-03-12 12:38:043楼 得分:0
    直接看源代码吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 13:41:474楼 得分:0
    String 中的那个方法:

    public String replace(String oldC, String newC)

    根本不是普通的能看懂的,是采用正则表达式的字面模式实现的。
    要看懂这个得先看懂 Pattern 和 Matcher 两个类的的五六千代码。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 13:51:175楼 得分:0
    最少要有三个参数吧,一个是字符串,一个是被替换的字符串,一个是替换的字符串。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 13:57:066楼 得分:0
    public class toString {

    public static String replaceStr(String str, String problemStr, String replace){

        for(int i=str.lastIndexOf(problemStr); i>=0; i=str.lastIndexOf(problemStr, i-1)){

            if(i==0){

                str = replace+str.substring(i+1, str.length());

            }

            else{

                str = str.substring(0, i)+replace+str.substring(i+1, str.length());

            }//end if

        }//end for

        return str;

    }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 14:07:307楼 得分:1
    Java code
    public class Test { public static void main(String[] args) { String str = "123aa123aaa123bbb123ccc123ddd123aa123"; System.out.println(str); System.out.println(replace(str, "123", "***")); } public static String replace(String str, String old, String replacement) { StringBuffer sb = new StringBuffer(); int index = str.indexOf(old); if(index < 0) { return str; } int start = 0; int len = old.length(); do { sb.append(str.substring(start, index)) .append(replacement); start = index + len; index = str.indexOf(old, start); } while (index >= 0); sb.append(str.substring(start)); return sb.toString(); } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 18:09:378楼 得分:0
    呵呵 多谢大家了 ~ 今下午偶也研究出来了~~ 代码也蛮简单~

    public class Test {

        public static void main(String[] args) {
            String str = "123aa123aaa123bbb123ccc123ddd123aa123";
      String old = "123", snew = "***";
    String fw = "";
    int index = -1;
    while((index=str.indexOf(old))!= -1){
      fw += str.substring(0,index) + snew ;
      str = str.substring(index +old.length(),str.length());

    }

    String res = fw+str;

    System.out.println(str);

            System.out.println(res);

           
        }
    }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-12 18:11:239楼 得分:0
    抱歉~~偶刚在记事本里敲的~~~ 格式没排好  ~    ;-)
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved