繁体   English   中英

拆分字符串时数组索引出界

[英]Array Index Out Bound when spliting the string

我的 txt 文件中有一个数据 sotre 列表,如下所示

"abc@gmail.com","10.9.2.34"
"abc@gmail.com","10.9.2.34"
"abc@gmail.com","10.9.2.34"
"abc@gmail.com","10.9.2.34"
"abc@gmail.com","10.9.2.34"
"abc@gmail.com","10.9.2.34"

我将读取我的 txt 文件中的所有输入并存储到DailyFileData 之后,我想从数据中提取IP addressgmail.com ,但我无法实现mail1变量将从我拥有的 txt 文件中存储"abc@gmail.com","10.9.2.34"搜索多种解决方案,了解如何在 stackoverflow 和其他网站中指定两个分隔符。 但我收到ArrayIndexOutOfboundException 。错误发生在以下代码行中

String IP1 = Emaildata1[1];



这是我的源代码

 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--;
                               }
                          }
            }

我不明白你想在你的代码中实现什么。 但是,如果您有像"abc@gmail.com","10.9.2.34"这样的String "abc@gmail.com","10.9.2.34"并且您试图仅提取gmail.comIP address和域名,则可以简单地尝试以下方法,而无需进行任何复杂的模式匹配:

String a = "\"abc@gmail.com\",\"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));
            }
        }

注意:这不是最佳解决方案。 这只是解决你的小问题。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM