当前位置: 面试刷题>> 字符串生成器Ⅱ (经典算法题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来实现字符串生成器的功能,根据模板和字典生成最终的字符串,并在最后添加了推荐学习的提示。