所用动态文案方法
已经有过两篇文章有过介绍,
具体使用可以参考文章1
此文章只做留档之用
// 获取智推中需要自定义的字段
export function getZhiTuiName(zhiTui: string) {
if (!zhiTui) {
return []
}
// 跳出循环标识
let flag = true
// 返回 数组
const nameArr = []
// 当前循环 字符串起始位置
let number = 0
while (flag) {
const start = zhiTui.indexOf('{{', number)
if (start < 0) {
flag = false
break
}
const end = zhiTui.indexOf('}}', start)
nameArr.push(zhiTui.substring(start + 2, end))
number = end
}
console.log('getZhiTuiName----', nameArr)
return nameArr
}
// replace(/\s+/g, '')
// 根据真实数据动态映智推配置的文案
export function setZhiTuiData(nameArr: any, zhiTui: string, data:any) {
let temp = zhiTui
nameArr.forEach((item: any) => {
// 循环替换
temp = temp.replace('{{' + item + '}}', data[item])
})
return temp
}
// 把智推静态数据截取出来
export function tempText(nameArr: any, zhiTui: string) {
if (!zhiTui) {
return []
}
let text = zhiTui
const arr:any = []
nameArr.forEach((item: any) => {
// 循环截取字符串
const tArr = text.split('{{' + item + '}}')
arr.push(tArr[0])
if (tArr[1].includes('{{')) {
text = tArr[1]
} else {
arr.push(tArr[1])
}
})
console.log(arr)
return arr
}
// 把智推静态数据截取出来
export function getAllText(nameArr: any, zhiTui: string) {
if (!zhiTui) {
return []
}
let text = zhiTui
const arr:any = []
nameArr.forEach((item: any) => {
// 循环截取字符串
const tArr = text.split('{{' + item + '}}')
arr.push(tArr[0])
// key
arr.push(item)
if (tArr[1].includes('{{')) {
text = tArr[1]
} else {
arr.push(tArr[1])
}
})
console.log(arr)
return arr
}
/**
* 拆解智推配置的字符串模版
* @param zhiTui 智推配置的值,格式为“{{expiredAmount}}元{{queryDays}}天后到期”
* @returns 拼接数组,格式为“['expiredAmount', '元', 'queryDays', '天后到期']”
*/
export function formatZhiTuiName(zhiTui: string, startWith: string = '{{', endWith: string = '}}') {
if (!zhiTui || typeof zhiTui !== 'string') {
return []
}
// 返回 数组
const nameArr = []
// 当前循环 字符串起始位置
let number = 0
try {
while (true) {
const start = zhiTui.indexOf(startWith, number)
if (start < 0) {
number < zhiTui.length && nameArr.push(zhiTui.substring(number, zhiTui.length))
break
}
start && nameArr.push(zhiTui.substring(number, start))
const end = zhiTui.indexOf(endWith, start + startWith.length)
if (end <= 0) {
number = start + startWith.length
} else {
nameArr.push(zhiTui.substring(start + startWith.length, end))
number = end + endWith.length
}
}
} catch (err) {
console.log('formatZhiTuiName err', err)
}
return nameArr
}