本文目录导读:

- 基础:字符串替换(最直接,适合所有语言)
- 标准化:使用模板引擎(推荐,功能强大,防XSS)
- 专业人士:AI提示词中的模板变量(如ChatGPT、Claude)
- 高效技能:正则表达式批量提取与替换
- 特殊场景:Excel / 邮件合并 / 代码配置
- 总结建议
编写填充文案模板变量,核心在于定义变量占位符与编写替换逻辑,根据使用场景不同(如纯文本、代码、配置、AI提示词),实现方式也不同。
以下是几种最常用的实现方式:
基础:字符串替换(最直接,适合所有语言)
这是最原始但最通用的方法,定义好占位符,然后逐一或批量替换。
占位符风格: {变量名}、{{变量名}}、$变量名$、%变量名%
伪代码示例(逻辑通用):
模板: "尊敬的{客户姓名},您的订单{订单号}已发货,预计{送达时间}到达。"
变量: { "客户姓名": "张三", "订单号": "OD123456", "送达时间": "明天下午" }
结果 = 模板.replace("{客户姓名}", "张三")
.replace("{订单号}", "OD123456")
.replace("{送达时间}", "明天下午")
优点: 零依赖,运行速度快。 缺点: 当模板变量很多时,代码会冗长;容易出错(忘记替换某个变量会留下原始占位符)。
标准化:使用模板引擎(推荐,功能强大,防XSS)
在实际开发或文案系统里,通常使用现成的模板引擎,它们支持循环、条件判断、自动转义HTML。
Python (Jinja2 / Django Template)
from jinja2 import Template
# 1. 定义模板(使用 {{ }} 语法)
template_str = "您好,{{ name }}!您的验证码是 **{{ code }}**,有效期{{ expire_min }}分钟。"
template = Template(template_str)
# 2. 传入变量(字典)
data = {"name": "Alice", "code": "8888", "expire_min": 5}
# 3. 渲染
output = template.render(data)
print(output)
# 输出:您好,Alice!您的验证码是 **8888**,有效期5分钟。
JavaScript (ES6 模板字符串 / Handlebars)
// ES6 模板字符串(需要动态创建,不太安全,但简单)
let name = "Bob";
let code = "1234";
let output = `您好,${name}!您的验证码是 ${code}。`; // 直接写死变量
// 更推荐:第三方库 Handlebars
const Handlebars = require('handlebars');
let source = "您好,{{name}}!您的验证码是 {{code}}。";
let template = Handlebars.compile(source);
let result = template({ name: "Charlie", code: "5678" });
console.log(result);
Java (Thymeleaf / FreeMarker)
// 使用 FreeMarker
Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
Template template = new Template("name", "欢迎 ${user}!", new StringReader(""), cfg);
Map<String, Object> data = new HashMap<>();
data.put("user", "Admin");
Writer out = new StringWriter();
template.process(data, out);
System.out.println(out.toString());
专业人士:AI提示词中的模板变量(如ChatGPT、Claude)
在与AI交互时,模板变量需要语义清晰,且通常建议用双层大括号避免被AI误解。
推荐格式:
系统指令:
你是一个招聘文案生成器,请根据以下模板生成文案:
“【急招】我们正在寻找一位{{岗位名称}},要求{{工作经验}},工作地点在{{城市}}。”
用户输入:
请使用以下信息填充模板:
- 岗位名称 = 高级前端工程师
- 工作经验 = 3年以上React开发经验
- 城市 = 上海
注意:请直接将模板中的变量替换为实际内容,不要解释过程,只输出最终文案。
为什么用 ?
- 视觉上区别于Markdown()、代码()。
- 容易通过
Regex: \{\{(.*?)\}\}正则提取变量名。
高效技能:正则表达式批量提取与替换
当你有一堆模板,或者不知道模板里有哪些变量时,用正则来自动发现并替换。
Python 示例:
import re
template = "亲爱的{姓名},您的{业务类型}已办理成功,请于{日期}前确认。"
data = {"姓名": "赵六", "业务类型": "信用卡", "日期": "2024-08-15"}
# 使用正则替换,自动匹配 {} 内的内容
def replace_var(match):
var_name = match.group(1) # 提取变量名
return data.get(var_name, match.group(0)) # 如果找不到,保留原样
output = re.sub(r'\{(\w+)\}', replace_var, template)
print(output)
# 输出:亲爱的赵六,您的信用卡已办理成功,请于2024-08-15前确认。
特殊场景:Excel / 邮件合并 / 代码配置
- Excel(Word邮件合并): 使用
<<字段名>>作为占位符,数据源选Excel表。 - 配置文件(YAML/Toml): 用
$VAR_NAME或{VAR_NAME},配合os.environ读取。 - 数据库模板: 直接在SQL里加 或
name(PreparedStatement)。
总结建议
| 场景 | 推荐方法 | 占位符语法 |
|---|---|---|
| 简单替换(新手/快速脚本) | str.replace() 或 正则 |
{var} |
| Web开发 / 后端逻辑 | Jinja2 (Python) / Handlebars (JS) / Thymeleaf (Java) | {{ var }} |
| AI提示词工程 | 明确标记,使用双层大括号 | {{ var }} |
| 配置文件/环境变量 | $VAR 或 {VAR} |
$VAR |
最佳实践:
- 统一风格: 整个项目或文档库只用一种占位符(推荐
{{变量名}})。 - 防遗漏: 替换后检查字符串中是否还有残留的 或 。
- 日志: 在填充前打印模板和变量字典,方便调试。
- 安全: 如果模板来自用户输入,不要使用
eval()或new Function()直接执行,应使用模板引擎自带的转义功能(防止XSS)。