在与Java字符串中删除所有的元音(Remove all vowels in a string wi

2019-07-03 11:20发布

我做我的计算机科学课程家庭作业。 任务是获得用户输入,删除所有的元音,然后打印新的声明。

我知道我可以很容易地使用此代码做到这一点:

string.replaceAll("[aeiou](?!\\b)", "")

但我的教练希望我使用嵌套if和else if语句来达到的效果。 现在,我使用的是这样的:

if(Character.isLetter('a')){
    'do something'
}else if(Character.isLetter('e')){
    'do something else'

但我不知道该怎么里面做ifelse if语句。 我应该删除信? 还是有更好的方式来做到这一点?

见此,因为这是我的功课,我不想完全的答案只是提示。 谢谢!

Answer 1:

Character.isLetter('a')

Character.isLetter(炭)告诉你,如果你给它的值是一个字母,这是不是在这种情况下,有帮助(你已经知道,“一”是一个字母)。

你可能想使用等于运算符, == ,看看你的角色是一个“A”,如:

char c = ...
if(c == 'a') {
    ...
} else if (c == 'e') {
    ...
}

你可以得到所有以多种方式与字符串的字符:

  • 作为以与阵列String.toCharArray()
  • 使用获得每个字符从字符串String.charAt(指数)


Answer 2:

我想他可能想要的是你读取的字符串,创建一个新的空字符串(称之为s ),循环在你的输入,并添加所有没有元音的字符s (这需要一个if语句)。 然后,您只需将打印内容s


编辑:您可能要考虑使用StringBuilder这个,因为重复的字符串连接可以影响性能,但这个想法是一样的。 但说实话,我怀疑它将使这种类型的东西一个明显的区别。



Answer 3:

我想你可以通过字符检查迭代如果是元音或下面不是:

  define a new string 
  for(each character in input string)
    //("aeiou".indexOf(character) <0) id one way to check if character is consonant
    if "aeiou" doesn't contain the character  
      append the character in the new string


Answer 4:

如果你想这样做在O(n)的时间

  • 遍历您的字符串的字符数组
  • 如果碰到一个元音跳过指数并复制下一个非元音字符元音位置。
  • 您将需要两个柜台,其中一个在整个字符串进行迭代,它记录了最后一个元音位置的其他。
  • 当你到达数组的末尾,看看元音跟踪计数器 - 它坐在一个元音,如果不是那么新的字符串可以建立索引0到“vowelCounter-1”。

如果你这样做是在Java中,你将需要额外的空间来建立新的字符串等。如果你用C做它,你可以简单地用一个空字符终止字符串,并完成该计划,没有任何额外的空间。



Answer 5:

我不认为你的老师想让你打电话Character.isLetter('a')因为它总是true

构建结果没有正则表达式是使用最简单的方法StringBuilderswitch语句,就像这样:

String s = "quick brown fox jumps over the lazy dog";
StringBuffer res = new StringBuffer();
for (char c : s.toCharArray()) {
    switch(c) {
        case 'a': // Fall through
        case 'u': // Fall through
        case 'o': // Fall through
        case 'i': // Fall through
        case 'e': break; // Do nothing
        default: // Do something
    }
}
s = res.toString();
System.out.println(s);

你也可以用等效替换这个if ,像这样:

if (c!='a' && c!='u' && c!='o' && c!='i' && c!='e') {
    // Do something
}


文章来源: Remove all vowels in a string with Java