如何从字符串中删除电子邮件地址?以及所有其他数字和特殊字符?
示例字符串可以是
"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 新手!
正如其他人所指出的,您可以使用正则表达式来清理您的 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)
如果您需要删除更多垃圾(或更少,例如标点符号),那么,您已经掌握了原则。调整它以满足您的需求。