编写一个程序,当在一个字符串中出现子串时就删除它。 【输入形式】 用户在第一行输入一个字符串,用户在第二行输入一个子串。 【输出形式】 程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。
时间: 2024-06-20 19:03:21 浏览: 198
你可以使用以下的步骤编写这个程序:
1. 读取用户输入的字符串和子串。
2. 使用字符串的find函数查找子串在字符串中的位置,如果找到了就删除。
3. 重复第2步直到找不到为止。
4. 输出删除子串后的字符串。
这里给出一个Python语言的实现示例:
```
# 读取用户输入的字符串和子串
s = input().strip()
sub = input().strip()
# 不断查找并删除子串,直到找不到为止
while True:
pos = s.find(sub)
if pos == -1:
break
s = s[:pos] + s[pos+len(sub):]
# 输出删除子串后的字符串
print(s)
```
相关问题
编写一个程序,当在一个字符串中出现子串时就删除它。 【输入形式】 用户在第一行输入一个字符串,用户在第二行输入一个子串。 【输出形式】 程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。用C语言实现
可以使用C语言的字符串函数来实现删除一个字符串中的子串,具体步骤如下:
1. 使用`fgets()`函数从标准输入中读取用户输入的字符串和子串;
2. 使用`strstr()`函数在字符串中查找子串,如果找到了就使用`memmove()`函数将子串后面的字符往前移动,覆盖掉子串,直到字符串中不再包含子串;
3. 输出删除子串后的字符串。
下面是一个示例代码:
```
#include <stdio.h>
#include <string.h>
int main() {
char str[100], sub[100];
fgets(str, 100, stdin);
fgets(sub, 100, stdin);
sub[strcspn(sub, "\n")] = '\0'; // 去掉fgets读入的换行符
int len = strlen(sub);
char *pos;
while ((pos = strstr(str, sub)) != NULL) {
memmove(pos, pos + len, strlen(pos + len) + 1);
}
printf("%s", str);
return 0;
}
```
用C++编写一段程序,当在一个字符串中出现子串时就删除它。 【输入形式】 用户在第一行输入一个字符串,用户在第二行输入一个子串。 【输出形式】 程序在下一行输出删除其中所有子串后的字符串。如果字符串不包含子串则输出原字符串本身。
在C++中,你可以使用`std::string::find`函数来查找子串的位置,并使用`substr`和`erase`操作来删除子串。下面是一个简单的示例程序:
```cpp
#include <iostream>
#include <string>
void deleteSubstring(std::string& str, const std::string& substr) {
size_t pos = 0;
while ((pos = str.find(substr)) != std::string::npos) {
// 找到子串位置,从该位置开始截取到子串末尾
str.erase(pos, substr.length());
// 继续搜索下一个子串的位置
pos += substr.length();
}
}
int main() {
std::string input_str, sub_str;
std::getline(std::cin, input_str);
std::getline(std::cin, sub_str);
deleteSubstring(input_str, sub_str);
if (input_str.empty()) {
std::cout << "原始字符串不含子串" << std::endl;
} else {
std::cout << "删除子串后的字符串: " << input_str << std::endl;
}
return 0;
}
```
**相关问题--:**
1. 这段代码如何处理子串出现多次的情况?
2. 如果子串不存在于输入字符串中,这段代码会怎样处理?
3. C++标准库中的哪些其他函数可以用于字符串操作?
阅读全文
相关推荐












