输入一个字符串 str,再输入要删除字符 c(非空格字符),大小写不区分,将字符串 str 中出现的所有字符 c 删除。提示:去掉两端的空格。 用java实现
时间: 2023-09-21 08:07:41 浏览: 298
可以使用Java的字符串操作函数 `replaceAll()` 来实现删除指定字符。具体代码如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String str = input.nextLine().trim(); // 输入字符串并去掉两端空格
String c = input.nextLine().trim().toLowerCase(); // 输入要删除的字符并转换为小写
str = str.replaceAll("(?i)" + c, ""); // 使用正则表达式替换所有出现的字符 c,"(?i)"表示不区分大小写
System.out.println(str);
}
}
```
例如输入:
```
This is a test string.
S
```
输出结果为:
```
Thi i a tet tring.
```
相关问题
输入一个字符串 str,再输入要删除字符 c(非空格字符),大小写不区分,将字符串 str 中出现的所有字符 c 删除。提示:去掉两端的空格。用C语言实现代码
以下是用 C 语言实现删除字符串中指定字符的代码:
```c
#include <stdio.h>
#include <string.h>
void removeChar(char *str, char c) {
int i, j;
int len = strlen(str);
for (i = 0, j = 0; i < len; i++) {
if (str[i] != c && str[i] != c - 32 && str[i] != c + 32) {
str[j++] = str[i];
}
}
str[j] = '\0';
}
int main() {
char str[100], c;
printf("请输入一个字符串: ");
gets(str);
printf("请输入要删除的字符: ");
scanf("%c", &c);
removeChar(str, c);
printf("删除后的字符串为: %s\n", str);
return 0;
}
```
在这段代码中,我们首先定义了一个 `removeChar` 函数,该函数接收两个参数,分别为字符串和要删除的字符。然后使用两个指针,一个指向原始字符串,另一个指向新的字符串。遍历原始字符串,如果遇到要删除的字符,则不将该字符加入新的字符串中,否则将该字符加入新的字符串中。最后,将新的字符串结束符设置为 `\0`。
在 `main()` 函数中,我们使用 `gets()` 函数读取字符串,使用 `scanf()` 函数读取要删除的字符,调用 `removeChar()` 函数,最后输出删除后的字符串。
7-7 删除字符输入一个字符串 str,再输入要删除字符 c(非空格字符),大小写不区分,将字符串 str 中出现的所有字符 c 删除。提示:去掉两端的空格。
### Python 实现
为了实现删除字符串中所有指定字符(不区分大小写),并且去除两端空格的功能,可以采用如下方式:
```python
def remove_chars_and_strip(s, chars_to_remove):
# 将字符串转换为小写形式以便于处理时不区分大小写
lower_s = s.lower()
# 创建一个新的字符串列表,其中只包含不在 `chars_to_remove` 中的字符
filtered_chars = [ch for ch in s if ch.lower() not in chars_to_remove.lower()]
# 使用 join 函数将过滤后的字符重新组合成新的字符串,并调用 strip 去除首尾空白字符
result_string = ''.join(filtered_chars).strip()
return result_string
# 测试例子
test_str = " Hello World! This is an Example. "
remove_char = "E"
print(remove_chars_and_strip(test_str, remove_char))
```
上述代码定义了一个名为 `remove_chars_and_strip` 的函数[^1]。此函数接收两个参数:一个是待处理的目标字符串 `s` 和一个表示想要移除哪些字符的字符串 `chars_to_remove`。
对于每一个字符,在将其加入最终的结果之前会先检查它的小写字母版本是否存在于 `chars_to_remove` 当中的任何一个位置上;如果不存在,则保留该字符。最后一步是对得到的新字符串执行 `.strip()` 来去掉任何可能存在的前导或拖尾空间[^2]。
---
### Java 实现
同样的功能可以在 Java 中这样实现:
```java
public class Main {
public static void main(String[] args) {
String testStr = " Hello World! This is an Example. ";
char removeChar = 'E';
System.out.println(removeCharsAndStrip(testStr, Character.toString(removeChar)));
}
private static String removeCharsAndStrip(String s, String charsToRemove){
StringBuilder sb = new StringBuilder();
// 转换成小写进行比较操作
String targetLower = s.toLowerCase();
for (int i=0; i<s.length(); ++i){
if (!targetLower.contains(Character.toString(charsToRemove.charAt(0)).toLowerCase()) ||
!Character.toLowerCase(s.charAt(i)) == Character.toLowerCase(charsToRemove.charAt(0))){
sb.append(s.charAt(i));
}
}
return sb.toString().trim();
}
}
```
在这个 Java 版本的例子中,创建了一个辅助类 `Main` 并在其内实现了静态方法 `removeCharsAndStrip` 。这个方法同样接受两个参数——原始字符串 `s` 及希望被移除掉的一个单独字符 `charsToRemove` ,这里假设仅传递单个字符作为第二个参数。遍历整个输入字符串的过程中,通过对比当前字符与目标字符的小写形式决定是否应该跳过当前字符。完成迭代后,利用 `StringBuilder` 构建新字符串并应用 `String.trim()` 方法清除多余的前后空白[^4]。
阅读全文
相关推荐










