java占位符打印_java 获取字符串占位符列表

一. 概述

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

二. 示例

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

2.1 工具类

/**

* 获取字符串里的占位符列表, 占位符样式 ${param}

* @param content

* @return

*/

public static List getPlaceholderList(String content){

char[] textChars = content.toCharArray();

StringBuilder textSofar = new StringBuilder();

StringBuilder sb = new StringBuilder();

// 存储占位符 位置信息集合

List 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 = "

\n" +

" 第一段占位符: ${name1}\n" +

"

\n" +

"

\n" +

" 第二段占位符: ${name2}\n" +

"

";

List placeholderList = getPlaceholderList(content);

placeholderList.forEach(System.out::println);

}

打印

${name1}

${name2}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值