【发布时间】:2019-06-21 15:58:56
【问题描述】:
在创建主题页面上,我有一个部分由代码填充的文本区域。 confidential 标签之间的所有内容都由这段代码添加。
There is some text in the message!
[confidential]
{sitedetails}
Site URL: example.com
Site Username: test
Site Password: test
FTP URL: ftp.domain.com
FTP Username: test
FTP Password: test
Optional Information: Just some text for testing purposes!
{/sitedetails}
[/confidential]
在同一页面上运行此代码:
var $editor = $(".markItUpEditor");
var curValue = $editor.val();
var sdCheck = curValue;
var sdAnalyze = /{sitedetails}([\S\s]*?){\/sitedetails}/gm
var newSD = sdCheck.replace(sdAnalyze,"{sitedetails}\n\n" + inputValues + "\n\n{/sitedetails}");
//alert(newSD);
$editor.val(newSD);
这基本上用新的站点详细信息替换了站点详细信息。 inputValues 在此处不可见,但它们包含站点详细信息并且正在运行。
上面的代码也可以很容易地修改,通过更改这一行来删除站点详细信息:
var newSD = sdCheck.replace(sdAnalyze,"{sitedetails}\n\n" + inputValues + "\n\n{/sitedetails}");
到
var newSD = sdCheck.replace(sdAnalyze,"");
但是如何修改代码以保留{sitedetails} 和{/sitedetails} 之间的所有内容。
这应该返回:
Site URL: example.com
Site Username: test
Site Password: test
FTP URL: ftp.domain.com
FTP Username: test
FTP Password: test
Optional Information: Just some text for testing purposes!
如果可能的话,我怎样才能走得更远,只保持在Site URL:和Site Username:之间
这应该返回:
example.com
【问题讨论】:
-
出于好奇,这些都是键/值对。为什么不使用简单的对象而不是所有(非常昂贵的)字符串解析来填充文本区域?或者,至少考虑字符串模板文字。
-
@RandyCasburn 我正在修改我们网页上的现有扩展,但实际上并未触及核心文件。所以我创建了一个带有输入的创建主题页面的新选项卡。现在通常这些输入将通过扩展添加,但我不通过核心文件,因此必须将它们添加到 textarea 中。我给出的第一个代码是如何在输入新细节时更新文本区域。说到你所说的:
using a simple object我可以举个例子吗?因为我不知道你的意思。这可能就是我进行字符串解析的原因。 -
看来我不明白你的困境。您说:机密标签之间的所有内容都由此代码添加。 - 如果是这种情况,则在该代码中您拥有实现目标所需的一切。但我的经验是,如果有人更喜欢 RegEx,他们会竭尽全力确保解决方案是 RegEx。我不认为我可以在这里增加价值。
标签: javascript