从java字符串中删除Emaill地址

use*_*384 0 java regex

如何从字符串中删除电子邮件地址?以及所有其他数字和特殊字符?

示例字符串可以是

"Hello world my # is 123 mail me @ test@test.com"
Run Code Online (Sandbox Code Playgroud)

输出字符串应该是

"Hello world my is mail me"
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了这个,发现我可以使用以下正则表达式

"[^A-Za-z0-9\\.\\@_\\-~#]+"
Run Code Online (Sandbox Code Playgroud)

但该示例更多的是检查有效的电子邮件 ID,而不是将其删除。我是 Java 新手!

Pas*_*ent 5

正如其他人所指出的,您可以使用正则表达式来清理您的 String 并用空 string 替换不需要的部分""。为此,请查看类的replaceAll(String regex, String replacement)方法String以及PatternJava 中正则表达式语法的类。

下面,一些代码演示了一种清理提供的示例字符串的方法(虽然可能不是最优雅的):

String input = "Hello world my # is 123 mail me @ test@test.com";
String EMAIL_PATTERN = "([^.@\\s]+)(\\.[^.@\\s]+)*@([^.@\\s]+\\.)+([^.@\\s]+)";

String output = input.replaceAll(EMAIL_PATTERN, "") // Replace emails 
                                                    // by an empty string
        .replaceAll("\\p{Punct}", "") // Replace all punctuation. One of
                                      // !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
        .replaceAll("\\d", "") // Replace any digit by an empty string
        .replaceAll("\\p{Blank}{2,}+", " "); // Replace any Blank (a  space or 
                                             // a tab) repeated more than once
                                             // by a single space.

System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

运行此代码会产生以下输出:

Hello world my is mail me 
Run Code Online (Sandbox Code Playgroud)

如果您需要删除更多垃圾(或更少,例如标点符号),那么,您已经掌握了原则。调整它以满足您的需求。