gpt4 book ai didi

javascript - 使用占位符和替换对象格式化 JavaScript 字符串?

转载 作者:IT王子 更新时间:2023-10-29 02:51:32 33 4
gpt4 key购买 nike

我有一个字符串:我的名字是 %NAME%,我的年龄是 %AGE%。

%XXX% 是占位符。我们需要从对象中替换值。

对象看起来像:{"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}

我需要解析对象并用相应的值替换字符串。因此最终输出将是:

My Name is Mike and my age is 26.

整个事情必须使用纯 javascript 或 jquery 来完成。

最佳答案

原始问题的要求显然无法从字符串插值中获益,因为它似乎是对任意替换键的运行时处理。

但是,如果您只需要进行字符串插值,您可以使用:

const str = `My name is ${replacements.name} and my age is ${replacements.age}.`

请注意分隔字符串的反引号,它们是必需的。


对于满足特定 OP 要求的答案,您可以使用 String.prototype.replace() 进行替换。

以下代码将处理所有匹配项,并且不会触及没有替换的匹配项(只要您的替换值都是字符串,如果不是,请参见下文)。

var replacements = {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"},
str = 'My Name is %NAME% and my age is %AGE%.';

str = str.replace(/%\w+%/g, function(all) {
return replacements[all] || all;
});

jsFiddle .

如果您的某些替换不是字符串,请确保它们首先存在于对象中。如果您有类似示例的格式,即用百分号包裹,则可以使用 in 运算符来实现此目的。

jsFiddle .

但是,如果您的格式没有特殊格式,即任何字符串,并且您的替换对象没有 null 原型(prototype),请使用 Object.prototype.hasOwnProperty() ,除非您可以保证您的任何潜在替换子字符串都不会与原型(prototype)上的属性名称发生冲突。

jsFiddle .

否则,如果您的替换字符串是 'hasOwnProperty',您将得到一个困惑的结果字符串。

jsFiddle .


作为旁注,您应该将 replacements 称为 Object,而不是 Array

关于javascript - 使用占位符和替换对象格式化 JavaScript 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7975005/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com