Я не совсем уверен, что вы считаете, как действительный адрес электронной почты, но я сделал следующее на основе этого предположения:
действительный адрес электронной почты является строкой, которая имеет, по меньшей мере, 1 слово характер, , за которым следует знак '@', за которым следует не менее 1 алфавит, а затем '.' характер, и заканчивая по крайней мере, 1 алфавитом
Вот код, используя регулярное выражение:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class QuickTester {
private static String[] emails = {"[email protected]",
"randomStringThatMakesNoSense",
"[email protected]@@@@", "[email protected]",
"test123.com", "[email protected]",
"@[email protected]"};
public static void main(String[] args) {
for(String email : emails) {
System.out.printf("%s is %s.%n",
email,
(isValidEmail(email) ? "Valid" : "Not Valid"));
}
}
// Assumes that domain name does not contain digits
private static boolean isValidEmail (String emailStr) {
// Looking for a string that has at least 1 word character,
// followed by the '@' sign, followed by at least 1
// alphabet, followed by the '.' character, and ending with
// at least 1 alphabet
String emailPattern =
"^\\w{1,}@[a-zA-Z]{1,}\\.[a-zA-Z]{1,}$";
Matcher m = Pattern.compile(emailPattern).matcher(emailStr);
return m.matches();
}
}
Выход:
[email protected] is Valid.
randomStringThatMakesNoSense is Not Valid.
[email protected]@@@@ is Not Valid.
[email protected] is Not Valid.
test123.com is Not Valid.
[email protected] is Valid.
@[email protected] is Not Valid.
на основе вашего определения действительной электронной почты , вы можете настроить Pattern соответственно. Надеюсь, это поможет!
Укажите, пожалуйста, некоторые примеры (электронные письма, которые вы хотели бы отформатировать) и ожидаемые результаты? – Gosu
Немного обходного пути было бы проанализировать строку и вручную искать разделитель '@'. Это можно сделать с помощью цикла for, который пересекает каждый символ. – Boris
String.format (..) не использует токен '@', но использует специальные спецификаторы формата, такие как '% s' для строки или'% d' для числа. См. Http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax. Не имеет значения, где эти значения отображаются в String. Они будут вставлены вместо соответствующего спецификатора. – redge