当前位置: 首页 > 知识库问答 >
问题:

如何在java中删除字符串某些字母的所有字符

堵凯
2023-03-14

我应该编写一个函数,排除句子(字符串)中的某些字母(char)。我基本上也这么做了,但问题是我只剪掉了这个字母在句子中的第一次出现。

public static void main (String[] args) {
        String text = "This text may be readable without vowels!";
        String letters = "aeiou";
        Out.println(removeLetters(text, letters));
}
public static String removeLetters(String text, String letters) {
    char c = 'f';
    String remover = text;
    for (int i=0; i<letters.length(); i++) {
        c = letters.charAt(i);
        remover = removeChar(remover, c);
    }
    return remover;
}
public static String removeChar(String text, char c) {
    int i1 = text.indexOf(c);
    String result = text.substring(0, i1) + text.substring(i1+1);
    return result;
}

我需要如何更改最后一个函数remveChar以删除字母的所有外观?找到所有索引可能并不难,但真正的困难是之后将子字符串放在一起,这样您仍然只剩下一句话,而没有某些字母。因为如果我理解正确,索引越多,您需要添加的不同子字符串就越多。

目前我得到了这个。

Ths txt my be readable witht vowels!

我们的目标是:

Ths txt my b rdbl witht vwls!

共有3个答案

廉飞捷
2023-03-14

带回路的“经典”变体:

    public static String removeLetters(String text, String strLetters) {
        Set<Character> letters = new HashSet<>();
        for (char i : strLetters.toCharArray()) {
            letters.add(i);
        }

        StringBuilder sb = new StringBuilder();
        for (char i : text.toCharArray()) {
            if (!letters.contains(i)) sb.append(i);
        }
        return sb.toString();
    }
司空通
2023-03-14

我的建议是在remveChar函数中使用循环。

添加一个循环,如果text.indexOf(c)返回-1(这意味着字符串不再包含您正在搜索的字母),则该循环会中断。

这样,您将找到要从源字符串中删除的每个字母的所有出现处。

removeChar函数的示例代码:

    public static String removeChar(String text, char c) {
        String result = text;
        int i1 = text.indexOf(c);
        while (i1 != -1) {
            System.out.println("Index of " + c + " in " + result + " is: " + i1);
            String part1 = result.substring(0, i1);
            System.out.println(part1);
            String part2 = result.substring(i1+1);
            System.out.println(part2);
            result = part1 + part2;
            i1 = result.indexOf(c);
        }
        return result;
    }
濮彬
2023-03-14

这里有一种使用正则表达式的方法。它只是用一个空字符串替换字符类中的每个元音。

String text = "This text may be readable without vowels!";
text = text.replaceAll("[aeiou]","");
System.out.println(text);

打印

Ths txt my b rdbl wtht vwls!    
 类似资料:
  • 问题内容: 我正在考虑使用删除字符串中的某些字符。目前尚不清楚将要删除哪些字符(即我想删除哪些字符),但是我会假定任何字符都是有效的(例如和之类的东西,等等)。 我遇到了http://www.java-tips.org/java-se-tips/java.lang/strip-certain-characters- from-a-string.html, 但是肯定有比遍历每个字符更好的方法… 有什

  • 问题内容: 我正在编写python MapReduce字数统计程序。问题是数据中散布着许多非字母字符,我发现这篇文章从Python的字符串中剥离了除了字母数字字符之外的所有内容,这显示了使用正则表达式的一个很好的解决方案,但是我不确定如何实现它 恐怕我不确定该如何使用该库甚至正则表达式。我不确定如何将正则表达式模式正确地应用于传入的字符串(书的一行)以检索没有任何非字母数字字符的新行。 有什么建议

  • 问题内容: 我对此感兴趣 ,它将在给定的$ string中搜索$ char1和$ char2,如果找到了该字符串,则从这两个字符之间的子字符串中清除$ string, 包括 $ char1和$ char2本身。 例: 现在,$ string应该只包含 有人有快速解决方案吗? 问题答案:

  • 问题内容: 尝试删除所有非0-9的字母和字符和一个句点。我正在使用,但它也会删除小数,如何也保留小数? 问题答案: 试试这个代码: 现在将包含。

  • 我是python的新手,正在为一个特定的任务而苦苦挣扎: 我有一个字符串,它可以包含任何东西,但它总是“结束”相同的。它可以只是一个文件名,一个完整的路径,或者只是一个随机字符串,以一个版本号结尾。 示例: 什么总是相同的(从结尾看)是,如果你到达第二个点,在它前面走2个字符,你总是匹配的部分,我感兴趣。在某个字符串之后剪切所有东西是“容易的”,我自己解决了它--这就是为什么字符串以现在的版本结尾

  • 问题内容: 我想从我的字符串中删除以下所有字符 “> [],-” 目前我正在这样做。但必须有一个更有效的方法 问题答案: 使用描述要替换的所有字符的正则表达式,以及替换与该正则表达式匹配的所有内容的方法: (编辑:实际上,我认为不应该转义。而且我忘记了将反斜杠加倍,因为它们会被解释两次:一次是由Java编译器,一次是由正则表达式引擎。)