我正在尝试编写一个函数,该函数接收一长串文本,在文本中标识占位符,并提示用户提供应取代占位符的值。占位符的标记看起来类似于用于图像或链接的降价:
some text, some more text, ?[name][description] more text, not just commas
name
和description
是文本的任意运行。当我找到这些占位符时,我想使用名称和描述弹出格式良好的对话框,并让用户提供替换值。
我已经有了一个很好的函数(称为htmlPrompt
),你可以用它来处理一段HTML(对于提示的主要部分),有一个文本框,然后调用你的回调函数提供结果(如果按下取消,则为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
值答案 0 :(得分:0)
对于每个name
和description
个tupples:
首先使用match
来阅读name
和desription
。
用户提示。
然后使用replace
替换它们。