计算字符串中某些值出现次数

时间:2013-06-19 08:59:40

标签: java string count

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

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或其他任何事情发生过多次,以便我可以从特定的人那里收到一些邮件?

3 个答案:

答案 0 :(得分:0)

您可以使用String tokenizer拆分字符串,并匹配第一个令牌的值。

如果eBay总是第一个字,那么你可以使用String类的startsWith()方法。

答案 1 :(得分:0)

尝试使用带有数据分组的正则表达式。

答案 2 :(得分: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;
}