找不到自己做的dw网站,口腔门诊建设网站,永久域名网站,游戏平台搭建目录
1、通配符应用场景
2、实现方案分析
2.1、可能针对不同模板中核定参数硬编码到程序之中写死
2.2、通配置模板之中动态获得对应的参数
3、通过正则表达式验证与替换参数${}参考示例
4、参考文章 1、通配符应用场景 我们在使用通配符场景#xff0c;主要是应用于短信…目录
1、通配符应用场景
2、实现方案分析
2.1、可能针对不同模板中核定参数硬编码到程序之中写死
2.2、通配置模板之中动态获得对应的参数
3、通过正则表达式验证与替换参数${}参考示例
4、参考文章 1、通配符应用场景 我们在使用通配符场景主要是应用于短信发送水费通知信息。其中里面可能有户名、当前水费金额以及当期【年月 如2024年06月】等等相关需要替换的动态信息需要使用到相关通配符作为参数进行相关的替换。同时这次替换参数还需要配置到相关的短信发送提供商对应的模板之中。
2、实现方案分析
2.1、可能针对不同模板中核定参数硬编码到程序之中写死 我是在最近维护以前其他旧系统代码之中发现了相关类似的代码这样相当于每个模板一旦设定后续再追加相关参数就需要调整和修改对应的代码之中各处代码无法适应新增相关动态配置通配符参数。我是增加一个通配符参数结果仅仅只修改某一处代码结果发现无法实现替换。于是需要搜索相关对应参数进行各处都得修改之后才能实现增加通配符参数方可生效。
2.2、通配置模板之中动态获得对应的参数 为何需要通过通配符之中动态获取参数因为这样可以通过如下两个参数来控制。模板类型与模板id然后通过模板字符串动态获取其中参数这样就可以获得正确获得变化后的参数名称同时保存一份到模板类型数据表之中。这样就可以通过解析相关参数就可以动态去解析有变化的参数这样通过参数替换就可以快速新增对应参数获得不同水司所需短信要求。
3、通过正则表达式验证与替换参数${}参考示例 经常需要使用正则表达式来查找和处理文本。其中一个常见的需求是查找字符串中的${}格式的变量并将其替换为对应的值。我们将介绍如何使用Java正则表达式来查找${}并进行替换操作同时提供一些代码示例。
【***水务】尊敬的${username},户号:${household_no},地址:${address},${meterReadMonth}用水量${used_num}立方米,费用共${fee}元。您可通过支付宝、微信等渠道缴费。请您认真核对缴费信息如缴错我公司概不负责。如已缴费请忽略此短信。供水热线07**-5834*** 正则表达式查找${} 在Java中可以使用Pattern和Matcher类来进行正则表达式的匹配操作。
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class TemplateParamsExtractor {public static void main(String[] args) {// 定义要匹配的字符串String input 【***水务】尊敬的${username},户号:${household_no},地址:${address},${meterReadMonth}用水量${used_num}立方米,费用共${fee}元。您可通过支付宝、微信等渠道缴费。请您认真核对缴费信息如缴错我公司概不负责。如已缴费请忽略此短信。供水热线07**-5834***;// 定义匹配的正则表达式String patternString \\$\\{([^}]*)\\};//String patternString \\$?\\{([^\\}])\\};// 创建Pattern对象Pattern pattern Pattern.compile(patternString);// 创建Matcher对象Matcher matcher pattern.matcher(input);// 查找匹配的结果while (matcher.find()) {// 获取匹配到的变量名String variableName matcher.group(1);System.out.println(variableName variableName);// 将变量名替换为对应的值String value getVariableValue(variableName);// 替换匹配到的变量input input.replace(matcher.group(), value);}// 输出替换后的结果System.out.println(input);}// 根据变量名获取对应的值public static String getVariableValue(String variableName) {/**【***水务】尊敬的罗琼,户号:19587,地址:朝阳街-纺织厂311-312,2024年-06月用水量11立方米,费用共33.00元。您可通过支付宝、微信等渠道缴费。请您认真核对缴费信息如缴错我公司概不负责。如已缴费请忽略此短信。供水热线07**-5834****/// 在实际应用中可以根据变量名从配置文件、数据库或其他数据源中获取对应的值String matchValue;switch (variableName){case username:matchValue罗琼;break;case household_no:matchValue19587;break;case address:matchValue朝阳街-纺织厂311-312;break;case meterReadMonth:matchValue2024年-06月;break;case used_num:matchValue11;break;case fee:matchValue33.00;break;default:break;}return matchValue;}}
在上面的示例中我们定义了一个带有${}格式的输入字符串并使用正则表达式\\$\\{([^}]*)\\}来匹配其中的变量名。其中
\\$表示匹配美元符号$ \\{和\\}表示匹配左右大括号{} ([^}]*)表示匹配大括号中的任意字符除了右括号}。 通过在正则表达式中使用圆括号我们可以将其中的变量名提取出来。
接下来我们创建Pattern对象并使用输入字符串和正则表达式初始化它。然后我们创建Matcher对象并使用find()方法查找匹配的结果。在每次循环中我们使用group(1)方法获取匹配到的变量名并使用自定义的getVariableValue()方法获取对应的值。最后我们使用replace()方法将匹配到的变量替换为对应的值。最后我们输出替换后的结果。
variableName username
variableName household_no
variableName address
variableName meterReadMonth
variableName used_num
variableName fee
【***水务】尊敬的罗琼,户号:19587,地址:朝阳街-纺织厂311-312,2024年-06月用水量11立方米,费用共33.00元。您可通过支付宝、微信等渠道缴费。请您认真核对缴费信息如缴错我公司概不负责。如已缴费请忽略此短信。供水热线07**-5834***
4、参考文章 java正则查找${}