Javascript 如何进行动态反向字符串插值
下面是我为一些代码编写的测试:Javascript 如何进行动态反向字符串插值,javascript,regex,interpolation,Javascript,Regex,Interpolation,下面是我为一些代码编写的测试: const transclude = '{fieldA}-{fieldB}-{fieldC}'; const val = { fieldA: 'one', fieldB: 'two', fieldC: 'three', }; const expected = 'one-two-three'; 应该是直截了当的,给定对象,我想将这些值插入transclude字符串并得到结果 现在我想到了一件很好的
const transclude = '{fieldA}-{fieldB}-{fieldC}';
const val = {
fieldA: 'one',
fieldB: 'two',
fieldC: 'three',
};
const expected = 'one-two-three';
应该是直截了当的,给定对象,我想将这些值插入transclude
字符串并得到结果
现在我想到了一件很好的事情,有可能倒退吗
const transclude = '{fieldA}-{fieldB}-{fieldC}';
const val = 'one-two-three';
const expected = {
fieldA: 'one',
fieldB: 'two',
fieldC: 'three',
};
为了从好答案中剔除坏答案,以下几点也需要发挥作用:
const transclude = '{fieldA}-{fieldB}-some-value-{fieldC}';
const val = 'one-two-some-value-three';
const expected = {
fieldA: 'one',
fieldB: 'two',
fieldC: 'three',
};
编辑:不得不说,我不知道为什么我在这个问题上投了一票——在我看来,我有一个非常明确的问题要解决?如果投票人认为我需要更多关注点,请发表评论并让我知道如何改进问题。将
transclude
字符串转换为带有命名捕获组的正则表达式。匹配结果的groups
属性将包含所需的对象
const transclude='{fieldA}-{fieldB}-一些值-{fieldC}';
const transRE=new RegExp(transclude.replace(/\{(.*?\}/g,(?.*));
const val=‘一、二、三’;
const result=val.match(transRE);
console.log(result.groups)代码>您需要显示您的尝试。。你试过什么?如果你遇到了一个特定的问题,发布你的特定问题,但你不能指望任何人只为你编写代码。我相信你知道这一点。:)FWIW我认为它不应该关闭,我也不是DV,但在我看来,33k代表用户/JS金徽章持有者可以通过一点明智的谷歌搜索来处理这种事情(我的意思是点击3个链接,顶部)…我认为第三个示例中的val
是错误的。它不应该是1 2一些值3
?您基本上需要将transclude
转换为带有捕获组的正则表达式,其中包含{xxx}
。如果您使用命名捕获组,它将通过管道输出预期的结果。@Barmar抱歉,我的斜体字不够具体。“这似乎(重点改变)像是33k代表用户/JS金徽章持有者遇到的那种问题……”等等。动态生成regexp的难度更大,我不是一个优秀的regexer,但我肯定会尝试一下,而不是根据我对这个问题的原始反馈在这里寻求更多帮助。也许这是上面所有评论者认为很容易做到的困难部分——我需要动态生成regexp?这是另一个正则表达式。将{(.*)}
替换为(?*)
看看这个答案(显然是一个非常聪明和受人尊敬的用户)-这个解决方案是多么简单,怎么对所有的评论者来说都不是显而易见的呢?讽刺我不认为任何评论者暗示这会很容易。但是没有证据表明你尝试过,这是我们所期望的,一个高代表性的用户应该知道这一点。因为你说做插值很简单,他们认为你应该能够考虑如何做。