1

我正在尝试编写一个函数,该函数需要一长串文本,识别文本中的占位符,并提示用户提供一个应该代替占位符的值。占位符的标记看起来类似于用于图像或链接的降价:

some text, some more text, ?[name][description] more text, not just commas

Wherenamedescription是任意的文本运行。当我找到这些占位符时,我想弹出一个格式很好的对话框,使用名称和描述,并让用户提供一个替换值。

我已经有一个不错的函数htmlPromptnull称为被按下),具有以下签名:

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只是字符串 - 它们没有给你任何有用的东西(例如匹配的位置在整个文本中)。

或者你认为我完全错了?我想要的整体流程是:

  • 查找文本中的每个占位符
  • 提示用户进行替换,同时使用namedescription
  • 将文本中的占位符表达式替换为用户提供的值。
4

1 回答 1

0

对于每个namedescription元组:

首先用于match阅读namedesription。用户提示。然后replace用来替换那些。

于 2013-03-04T13:40:25.933 回答