2010-11-10 5 views
0

J'ai une variable temp:chaîne java [] fendage email id

String temp = "Ms Abc`<[email protected]`>;Mr Cde`<[email protected]`>;Miss Xyz`<[email protected]`>"; 

Maintenant, je dois diviser cette chaîne temp variable dans un ArrayList ou String[] pour que je puisse extraire title, name, emailid pour l'insertion dans une base de données. Je ne suis en mesure de diviser l'id e-mail en utilisant le code suivant:

ArrayList emailIdList = new ArrayList(); 
Pattern p = Pattern.compile("\\b[A-Z0-9._%+-][email protected][A-Z0-9.-]+\\.[A-Z]{2,4}\\b",Pattern.CASE_INSENSITIVE); 
Matcher m = p.matcher(s); 
while (m.find()){ 
    emailIdList.add(m.group()); 
} 

Mais je vais avoir un problème obtenir le titre et le nom que je suis coincé avec la logique.

Comment cela peut-il être fait?

Répondre

1

je suggère d'utiliser fractionnés plusieurs fois et la valeur du magasin dans la collection comme ArrayList.

String temp = "Ms Abc`<[email protected]`>;Mr Cde`<[email protected]`>;Miss Xyz`<[email protected]`>"; 
    /* Initializing arralists */ 
    ArrayList<String> title = new ArrayList<String>(); 
    ArrayList<String> name = new ArrayList<String>(); 
    ArrayList<String> email = new ArrayList<String>(); 

    /* Splitting each record */ 
    String [] eachRecord = temp.split(";"); 
    for (int i = 0; i < eachRecord.length; i++) { 

     /* Fetch value in each record */ 
     String [] intermediateValue = eachRecord[i].split(" "); 
     title.add(intermediateValue[0]); 
     intermediateValue = intermediateValue[1].split("`<"); 
     name.add(intermediateValue[0]); 
     intermediateValue = intermediateValue[1].split("`>"); 
     email.add(intermediateValue[0]); 
    } 

Mais avec cette méthode, vous devez vous assurer que les valeurs auront le même format. Tout changement de format entraînera l'échec du code ou une exception dans votre application. J'espère que cela aide.

2

de Split d'abord sur le ; pour séparer chaque entrée:

String[] entry = temp.split(";"); 

Pour votre exemple entry contiendra:

 
[0] => "Ms Abc`" 
[1] => "Mr Cde`" 
[2] => "Miss Xyz`" 

Pour une seule entrée, maintenant, nous voulons extraire le Salutation (je pense vous appelez cela title), nom et adresse e-mail. Vous pouvez utiliser une expression régulière simple à faire:

Pattern p = Pattern.compile("(\\w+)\\s(\\w+)`<(.+)`>"); 

Ensuite, il suffit itérer sur entry et lire les groupes de l'expression régulière:

// for each of the entries 
for(String e : entry){ 
    Matcher m = p.matcher(e); 
    if(m.find()){ 
     String title = m.group(1); 
     String name = m.group(2); 
     String email = m.group(3); 
    } 
}