2017-10-11 4 views
-1

J'ai une liste de sotre de données dans mon fichier txt qui ressemblera à ce qui suit

tableau Index Out Bound lorsque spliting la chaîne

"[email protected]","10.9.2.34" 
"[email protected]","10.9.2.34" 
"[email protected]","10.9.2.34" 
"[email protected]","10.9.2.34" 
"[email protected]","10.9.2.34" 
"[email protected]","10.9.2.34" 

Je lirai toutes les entrées dans mon fichier txt et stocker dans DailyFileData. Après cela, je voudrais extraire le IP address et gmail.com des données, mais je ne peux pas y arriver.La variable mail1 va stocker "[email protected]","10.9.2.34" du fichier txt J'ai eu la recherche de la solution multiple pour la façon de spécifier deux délimiteurs dans stackoverflow et d'autres site . Mais je reçois ArrayIndexOutOfboundException erreur .La se produisent dans la ligne de code suivante

String IP1 = Emaildata1[1]; 



Voici mon code source

for(int c = DailyFileData.size()-1;c>=0;c--) 
     { 
     String mail1 = DailyFileData.get(c); 
     MailCount1 = Collections.frequency(DailyFileData,mail1); 
     System.out.println("Count of mail is :"+MailCount1); 
     String filename1 = f.getCanonicalPath(); 
     Pattern pattern = Pattern.compile("\\d{4}-\\d{2}-\\d{2}"); 
     Matcher match = pattern.matcher((CharSequence) filename1); 
     while (match.find()) 
     { 
      date1 = match.group(0); 
     } 
     String [] Emaildata1 = mail1.split(CSVSplitBy); 
     System.out.println(Emaildata1); 
     String domain1 = Emaildata1 [0]; 
     String IP1 = Emaildata1[1]; 
     String [] domainArray1 = domain1.split(emailSplitBy); 
     String domain2 = domainArray1[0]; 

     System.out.println("The extracted domain is :"+domain2); 
     System.out.println("The extracted date is :"+date1); 
     System.out.println("The extracted IP is :"+IP1); 
     domainAndCounting1.add(domain1); 
     domainAndCounting1.add(String.valueOf(MailCount1)); 
      Iterator<String> it = DailyFileData.iterator(); 
        while(it.hasNext()) 
          { 
          String mail2 = it.next(); 
          if(mail2.equals(mail1)) 
           { 
           it.remove(); 
           c--; 
           } 
          } 
      } 
+1

Quelle est la valeur de 'mail1'? –

+0

mail1 est la variable qui stocke l'adresse IP et l'adresse e-mail – Lokesh

+0

Oui, mail1 va stocker l'adresse IP et l'adresse e-mail que j'avais attachées avec mon code complet – yumi

Répondre

1

Je ne comprends pas ce que vous essayez d'atteindre dans votre code. Mais si vous avez String comme "[email protected]","10.9.2.34" et vous essayez d'extraire le IP address et le nom de domaine ne gmail.com vous pouvez simplement essayer ci-dessous approche sans aller à une complication de correspondance de motif:

String a = "\"[email protected]\",\"10.9.2.34\""; 
     String arr[] = a.split(","); 
     System.out.println(Arrays.toString(arr)); 

     for (String aa : arr) { 
      if (aa.contains("@")) { 
       System.out.println(aa.substring(aa.indexOf("@") + 1, aa.length() - 1)); 
      } else { 
       System.out.println(aa.substring(1, aa.length() - 1)); 
      } 
     } 

N.B. .: Ce n'est pas la meilleure solution. Ceci est juste résoudre votre petit problème. J'espère que cela t'aides.

+0

Merci, je gère résolu mon problème, c'est en raison d'une erreur imprudente que je fais dans le code – yumi