给定一段字符串text,其中可能包含多个字符。现给定一个敏感词keyword进行检测,你的任务是检测text中是否包含敏感词并把它替换为等长的'*'。检测时,要求敏感词的匹配是不区分大小写的。C语言
时间: 2024-10-24 07:18:38 浏览: 35
在C语言中,你可以通过遍历字符串并比较每个单词来实现这个功能。这里是一个简单的示例,使用了`strcasestr`函数来进行不区分大小写的字符串查找:
```c
#include <stdio.h>
#include <string.h>
// 检查字符串text中是否存在敏感词keyword,并进行替换
void censor_string(char *text, const char *keyword) {
size_t keyword_len = strlen(keyword);
size_t text_len = strlen(text);
// 遍历text中的每一个单词
for (size_t i = 0; i <= text_len - keyword_len; i++) {
if (strstr(&text[i], keyword) != NULL) { // 使用strcasestr做不区分大小写的匹配
// 如果找到敏感词,将其替换为*
memmove(&text[i + keyword_len], &text[i + keyword_len], text_len - i - keyword_len); // 移动剩余部分
text[i] = '*';
text[i + keyword_len] = '\0'; // 添加终止符
}
}
}
int main() {
char text[] = "This is a sample Text with the senSiTiVe Word.";
const char *keyword = "senSiTiVe";
censor_string(text, keyword);
printf("Censored string: %s\n", text);
return 0;
}
```
在这个例子中,我们首先计算关键词和文本的长度,然后遍历文本中的每个单词。如果找到了关键词,就用星号替换它,并移动后续的字符到新位置。
阅读全文