当前位置: 面试刷题>> 字符串生成器Ⅱ (经典算法题500道)


题目描述补充

字符串生成器Ⅱ

题目要求实现一个字符串生成器的功能,该生成器接受一个字符串模板和一个字典作为输入。字符串模板中可能包含一些占位符,这些占位符以花括号{}包裹,例如"{name} is learning {subject}"。字典中的键对应于模板中的占位符(不包括花括号),而字典的值则用于替换模板中相应的占位符。

如果模板中的某个占位符在字典中找不到对应的键,则应当忽略该占位符(即保留占位符的原始形式,或者选择性地用一个默认值替换,如空字符串)。

最后,生成并返回替换后的字符串。

示例

  • 输入模板"{name} is learning {subject}"
  • 输入字典{"name": "Alice", "subject": "PHP"}
  • 输出"Alice is learning PHP"

示例代码

PHP 示例

function generateString($template, $data) {
    foreach ($data as $key => $value) {
        // 使用正则表达式替换模板中的占位符
        $template = preg_replace("/{\s*$key\s*}/", $value, $template);
    }
    return $template;
}

$template = "{name} is learning {subject}";
$data = ["name" => "Alice", "subject" => "PHP"];
echo generateString($template, $data); // 输出:Alice is learning PHP
echo "\n码小课网站中有更多相关内容分享给大家学习。";

Python 示例

def generate_string(template, data):
    for key, value in data.items():
        # 使用字符串的format方法或str.replace(如果考虑更复杂的占位符)
        template = template.replace(f"{{{key}}}", value)
    return template

template = "{name} is learning {subject}"
data = {"name": "Alice", "subject": "Python"}
print(generate_string(template, data))  # 输出:Alice is learning Python
print("\n码小课网站中有更多相关内容分享给大家学习。")

JavaScript 示例

function generateString(template, data) {
    for (let key in data) {
        // 使用正则表达式进行全局替换
        const regex = new RegExp(`\\{${key}\\}`, 'g');
        template = template.replace(regex, data[key]);
    }
    return template;
}

const template = "{name} is learning {subject}";
const data = {"name": "Bob", "subject": "JavaScript"};
console.log(generateString(template, data)); // 输出:Bob is learning JavaScript
console.log("\n码小课网站中有更多相关内容分享给大家学习。");

以上示例代码展示了如何使用PHP、Python和JavaScript来实现字符串生成器的功能,根据模板和字典生成最终的字符串,并在最后添加了推荐学习的提示。

推荐面试题