2017-02-01 1 views
-3

Obtenir le nom de domaine de la liste d'email
Salut, J'ai une liste d'email identifiant à partir de laquelle je dois obtenir le nom de domaine.Obtenir le nom de domaine de la liste d'email

Pour un simple e-mail comme [email protected], j'ai fait la partie de code à partir de laquelle j'ai eu le domaine.
Mais pour les e-mails comme [email protected] (le nom de domaine réel est ibm.com), je suis incapable d'obtenir le domaine.

String domainName = ""; 
String[] parts = email.split("@"); 
if(parts.length == 2) 
    domainName = parts[1]; 

Comment diviser ou faire une expression régulière pour obtenir le nom de domaine?

Répondre

2

chaîne substring #() est plus fin, le fractionnement génère un tableau pour rien .... (type de gaspillage des ressources ...)

définir une méthode (va plus propre de cette façon ...)

public String getEmailDomain(String someEmail) 
{ 
    return someEmail.substring(someEmail.indexOf("@") + 1); 
} 
+0

Je voudrais inclure une vérification s'il y a vraiment un @ là-dedans. Ou au moins mentionner que ce qui précède donnera des résultats inattendus si @ est manquant. – GhostCat

+0

merci de vous rétroaction. quand je l'utilise, il donne un contenu exact après @, mais mon exigence. Quand est donné email comme [email protected] il devrait vérifier automatiquement et devrait donner un résultat comme arronsw.com – ganeshmaax

0

Vous pouvez essayer ce qui suit

(?<[email protected])[^.]+(?=\.) 

Cela redonnera le nom de domaine seul sans fuite suffex par exemple [email protected] retournera domaine

(?<[email protected])[a-zA-Z0-9\.]+(?<=) 

Cela redonnera le domaine et est suffixe ee [email protected] retournera domain.com ou [email protected] retournera 192.168.0.1

Pour expliquer comment cela fonctionne

? < =

regard positif derrière

@

correspond au caractère @ littéralement (sensible à la casse)

un match de caractère [a-zA-Z0-9. ]

+

Quantifier - Matches entre un et nombre illimité de fois, autant de fois que possible, redonnant au besoin (gourmand)

.

correspond au caractère. littéralement (sensible à la casse)

?< =

regard positif derrière

et en ne donnant pas une valeur à regarder derrière NULL est ce qui, correspond à toutes les positions

Pour plus d'informations sur Java Regex s'il vous plaît voir Tutorials Point

+0

le nom de domaine est tout ce qui suit le '@' et il peut même être une adresse IP. Votre solution obtient 'yahoo' de' name @ yahoo.com' et '192' de' name @ 192.168.1.1' –

+0

prenez cet email [email protected] le domaine exact est aaronsw quand on utilise ce split il donnera tout le contenu après @. Mais mon résultat devrait être comme aaronsw, com – ganeshmaax

+0

@Sergey cette solution fonctionne pour vous et tous les cas que vous avez? –

0

Vous pouvez vérifier le courrier électronique par regex Pattern et prendre la sous-chaîne:

String email = "[email protected]", domain; 
Pattern pattern = Pattern.compile(".+\\..+$"); 
Matcher matcher = pattern.matcher(email); 
if(matcher.find()) 
    domain = email.substring(matcher.start() + 1); 
else 
    domain = null;