美文网首页编程语言-Java系列
java 获取字符串占位符列表

java 获取字符串占位符列表

作者: 任未然 | 来源:发表于2020-06-26 14:32 被阅读0次

一. 概述

今天介绍一个简单的获取字符串占位符列表demo, 原理就是把字符串分解成一个字节数组, 然后遍历占位符特殊标识包囊的一段符号

二. 示例

示例占位符规则: ${param}

2.1 工具类

    // 标识忽略
    public static final int ignoreTg = 0;
    // 标识已读取到'$'字符
    public static final int startTg = 1;
    // 标识已读取到'{'字符
    public static final int readTg = 2;
    /**
     * 获取字符串里的占位符列表, 占位符样式 ${param}
     * @param content
     * @return
     */
    public static List<String> getPlaceholderList(String content){

        char[] textChars = content.toCharArray();
        StringBuilder textSofar = new StringBuilder();
        StringBuilder sb = new StringBuilder();
        // 存储占位符 位置信息集合
        List<String> placeholderList = new ArrayList<>();
        // 当前标识
        int modeTg = ignoreTg;
        for (int m = 0; m < textChars.length; m++) {
            char c = textChars[m];
            textSofar.append(c);
            switch (c) {
                case '$': {
                    modeTg = startTg;
                    sb.append(c);
                }
                break;
                case '{': {
                    if (modeTg == startTg) {
                        sb.append(c);
                        modeTg = readTg;
                    } else {
                        if (modeTg == readTg) {
                            sb = new StringBuilder();
                            modeTg = ignoreTg;
                        }
                    }
                }
                break;
                case '}': {
                    if (modeTg == readTg) {
                        modeTg = ignoreTg;
                        sb.append(c);
                        String str = sb.toString();
                        if (StringUtil.notEmpty(str)) {
                            placeholderList.add(str);
                            textSofar = new StringBuilder();
                        }
                        sb = new StringBuilder();
                    } else if (modeTg == startTg) {
                        modeTg = ignoreTg;
                        sb = new StringBuilder();
                    }
                }
                default: {
                    if (modeTg == readTg) {
                        sb.append(c);
                    } else if (modeTg == startTg) {
                        modeTg = ignoreTg;
                        sb = new StringBuilder();
                    }
                }
            }
        }
        return placeholderList;
    }

2.2 测试

public static void main(String[] args) {
        String content = "<p>\n" +
                "    第一段占位符: ${name1}\n" +
                "</p>\n" +
                "<p>\n" +
                "    第二段占位符: ${name2}\n" +
                "</p>";
        List<String> placeholderList = getPlaceholderList(content);
        placeholderList.forEach(System.out::println);
    }

打印

${name1}
${name2}

相关文章

  • java 获取字符串占位符列表

    一. 概述 今天介绍一个简单的获取字符串占位符列表demo, 原理就是把字符串分解成一个字节数组, 然后遍历占位符...

  • 2018-07-18 day03

    字符串以及字符串运算符 -%s 字符串占位符(格式符)-%d 整数占位符-%f 浮点数占位符 %.nf小数点后保留...

  • 字符串相关知识点

    字符串格式化所用占位符列表 转义字符 \ 运算 + :拼接 * :复制 字符串的处理 编码解码的问题

  • 2019-03-12

    1.格式字符串:在字符串中通过格式占位符来表示字符串中变法的部分语法:包含格式占位符的字符 %(给格式占位符赋值的...

  • 请你实现一个简单的字符串替换函数(python)

    例:请你实现一个简单的字符串替换函数。原串中需要替换的占位符为"%s",请按照参数列表的顺序一一替换占位符。若参数...

  • 随笔

    1.占位符% %s表示占位符类型是str字符串类型%d表示占位符类型是digital数字类型使用占位符的时候,还需...

  • 03 常用技巧介绍-(格式化、编码、while else、运算符

    1 格式化输出 % 在字符串里的占位符;%s:字符串占位符%d:数字占位符;%%:格式化输出中表示单纯的% %(p...

  • 2018-08-08 - Lisa’s Code Standar

    一、字符串 1.1、字符串一定要放在strings.xml里面,不要直接用 1.2、字符串占位符的使用:占位符使用...

  • 莹莹

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符...

  • 莹莹

    占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符占位符...

网友评论

    本文标题:java 获取字符串占位符列表

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