我正在尝试编写一个函数,该函数需要一长串文本,识别文本中的占位符,并提示用户提供一个应该代替占位符的值。占位符的标记看起来类似于用于图像或链接的降价:
some text, some more text, ?[name][description] more text, not just commas
Wherename
和description
是任意的文本运行。当我找到这些占位符时,我想弹出一个格式很好的对话框,使用名称和描述,并让用户提供一个替换值。
我已经有一个不错的函数htmlPrompt
(null
称为被按下),具有以下签名:
function (htmlText, inputStartValue, callback)
在插入这个函数之前,我写了粗略的准备:
myText = myText.replace(/(\?\[(.+)\][ ]?(?:\n[ ]*)?\[(.+)\])/g,
function (wholematch, m1, m2, m3) {
var repValue = prompt(m2);
if (repValue == null)
{
return m1;
}
return repValue;
});
它使用了 DOM 内置prompt
方法——在格式化方面,这对我来说确实做得不够好。
但是,我想不出一种插入方式htmlPrompt
——它只模拟一个模态对话框,并通过调用callback
.
我确实想过尝试手动进行替换,使用结果match
而不是replace
- 但据我所知,返回的值match
只是字符串 - 它们没有给你任何有用的东西(例如匹配的位置在整个文本中)。
或者你认为我完全错了?我想要的整体流程是:
- 查找文本中的每个占位符
- 提示用户进行替换,同时使用
name
和description
值 - 将文本中的占位符表达式替换为用户提供的值。