如何从字符串中删除字符

问题描述 投票:0回答:2
以外的所有字母。

我使用了此代码: System.out.println("Enter a sentence :"); Scanner sc = new Scanner(System.in); String sentence = sc.nextLine(); for (int i= 0; i < sentence.length(); i ++) { char ch = sentence.charAt(i); if (ch != 'a' || ch !='e' || ch !='i' || ch != '0' || ch != 'u' ) { String sentence_edited = sentence.replace(i,""); } } System.out.println(sentence_edited);

但它给出了一个compilationerror

.
我可以修复它?

编译器清楚地告诉您,the的方法签名不匹配,因为您试图通过索引

replace()

作为第一个参数。取而代之的是,您可能想通过一个
java string replace char
2个回答
2
投票

String

inde in index下的字符。
注意,期望两个字符值的
i
方法的版本对该任务没有用。因为它的意图是将一个具有另一个字符的角色重新定位,并且您无法将其从字符串中删除任何字符。
但这不是您的代码唯一问题。
条件不正确。您应该在此处使用逻辑
replace(char, char)

ch != 'a' || ch !='e' || ch !='i'... etc.可变性

&&
仅存在于定义的范围范围内。并且在循环中应用||没有任何意义,因为

sentence_edited

保持不变(

reminder:strings在java

中是可iMmut的)。即使您会重新分配变量

if
,它也会弄乱迭代顺序,并且会得到不正确的结果。
这里是解决这个问题的更好方法。
replaceAll()
您可以通过使用

sentence.replace(String.valueOf(ch),"")

方法来删除除元音以外的所有字符:
sentence
this方法期望trigular表达式
作为第一个参数(有关正则表达式的更多信息,请查看此教程
StringBuilder&Set 如果由于某种原因,您需要将循环用于此目的,则可以定义包含所有元音或
sentence

replaceAll()

String sentence = sentence.replaceAll("[^aeiou]", "");

如果您不满意的话,如下所示。并检查用户输入中的每个字符与元音集。

所有将通过条件的字符都将附加到

Set的实例上,该实例代表Java中的

字符串。您可以通过在其上调用String

轻松地将其转换为
StringBuilder

String 有两个变体:

toString()

String sentence = sc.nextLine();
StringBuilder sentenceEdited = new StringBuilder();

String vowels = "aeiou"; // or Set<Character> vowels = Set.of('a', 'e', 'i', 'o', 'u');
        
for (int i= 0; i < sentence.length(); i++) {
    char ch = sentence.charAt(i);
    if (vowels.contains(String.valueOf(ch))) {
        sentenceEdited.append(ch);
    }
}
System.out.println(sentenceEdited);

您的代码试图调用类似

String.replace

的东西,但是这种方法不存在。
字符串没有替换位置n的方法。
我建议您先将String String.replace(char, char)放入一个
String String.replace(CharSequence, CharSequence)
,然后使用
String.replace(int, CharSequence)
。最后,您用它的

char
方法从清洁
String

0
投票

嗯...这是您的代码,很少。您需要检查我们是否正在处理任何元音(== == =),也不需要其他字符串。
StringBuilder

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.