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


### 题目描述补充 **字符串生成器Ⅱ** 题目要求实现一个字符串生成器的功能,该生成器接受一个字符串模板和一个字典作为输入。字符串模板中可能包含一些占位符,这些占位符以花括号`{}`包裹,例如`"{name} is learning {subject}"`。字典中的键对应于模板中的占位符(不包括花括号),而字典的值则用于替换模板中相应的占位符。 如果模板中的某个占位符在字典中找不到对应的键,则应当忽略该占位符(即保留占位符的原始形式,或者选择性地用一个默认值替换,如空字符串)。 最后,生成并返回替换后的字符串。 ### 示例 - **输入模板**:`"{name} is learning {subject}"` - **输入字典**:`{"name": "Alice", "subject": "PHP"}` - **输出**:`"Alice is learning PHP"` ### 示例代码 #### 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 示例 ```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 示例 ```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来实现字符串生成器的功能,根据模板和字典生成最终的字符串,并在最后添加了推荐学习的提示。
推荐面试题