美文网首页美丽的爪哇岛
一个简单的占位符替换实现

一个简单的占位符替换实现

作者: begonia_rich | 来源:发表于2018-05-12 18:01 被阅读34次

    今天在看Guava的Preconditions这个类的源码的时候看到一个占位符替换的实现,我以前的想法都是replace,这个实现是跳过占位符...有点意思,这里记录下.或许以后用得到

        /**
         * 非常好的替换方法,核心逻辑就是搜索%s然后跳过...
         */
        public String format(String template,String[] args){
            StringBuilder builder = new StringBuilder(template.length() + 16 * args.length);
            int templateStart = 0;
            int i = 0;
            while (i < args.length) {
                // 获得下一个%s起始位
                int placeholderStart = template.indexOf("%s", templateStart);
                if (placeholderStart == -1) {
                    break;
                }
                // 将上一个%s末尾与下一个%s起始位之间的内容写入builder
                builder.append(template, templateStart, placeholderStart);
                // 将参数写入builder
                builder.append(args[i++]);
                // 记录下一个截断起始位
                templateStart = placeholderStart + 2;
            }
            // 将最后一个%s之后的内容追加到builder内
            builder.append(template, templateStart, template.length());
            return builder.toString();
        }
    

    只用了2个常见的api就实现了替换功能.以前从来没想到过这种思路,很新颖.

    相关文章

      网友评论

        本文标题:一个简单的占位符替换实现

        本文链接:https://www.haomeiwen.com/subject/ogshdftx.html