0

我有一个字符串,其中包含我的邮件详细信息,例如

GitHub   Sat Jun 01 13:32:02 IST 2013
eBay   Mon Jun 03 17:37:40 IST 2013
YouTube   Tue Jun 04 00:18:50 IST 2013
YouTube   Sat Jun 08 01:20:47 IST 2013
eBay   Sat Jun 08 13:19:22 IST 2013
eBay   Sat Jun 08 13:17:53 IST 2013
eBay   Mon Jun 10 15:43:01 IST 2013
YouTube   Mon Jun 10 15:47:02 IST 2013
eBay   Wed Jun 12 11:10:15 IST 2013
eBay   Wed Jun 12 19:25:50 IST 2013
eBay   Thu Jun 13 17:22:14 IST 2013
eBay   Thu Jun 13 18:09:18 IST 2013
Clark University  Thu Jun 13 19:30:09 IST 2013

有什么方法可以获取 eBay、Youtube 或任何事情发生的次数,以便我可以收到来自特定人的大量邮件?

4

3 回答 3

0

这个解决方案假设了两件事:

  • 日期名称不能出现在第一部分;
  • 每个条目由换行符分隔:

[用列表项和代码提取修复 SO 错误的额外行]

private static final Set<String> DAYS = new HashSet<String>(Arrays.asList(
    "Mon ", "Tue ", "Wed ", "Thu ", "Fri ", "Sat ", "Sun "
));

public int nrMatches(final String mailList, final String sender)
{
    int ret = 0;
    int index;

    for (final String line: mailList.split("\r?\n"))
        for (final String day: DAYS) {
            index = line.indexOf(day);
            if (index == -1)
                continue;
            if (line.subString(0, index).trim().equals(sender))
                ret++;
        }

    return ret;
}
于 2013-06-19T09:12:35.833 回答
0

您可以使用字符串标记器拆分字符串并匹配第一个标记的值。

如果 eBay 永远是第一个单词,那么您可以使用 String 类的 startsWith() 方法。

于 2013-06-19T09:02:07.573 回答
0

尝试对数据分组使用正则表达式。

于 2013-06-19T09:05:49.223 回答