Java String Parser查找字符串,保存并打印它

时间:2015-06-05 14:00:30

标签: java email parsing set

我在这里写了这个小部分,在电子邮件主题中找到标签,提取它们并将它们保存到我的套装中。

即。如果电子邮件主题是"你好那里#bro#senpai"它应该找到并提取“兄弟”。和' senpai'并将其放入m_aTags(这只是自定义类型Set - this.m_aTags = new HashSet(); - 这就是我如何创建它)

在m_aTags中我把所有新标签都作为MyTag对象。

Data = o.AsQueryable().Sum(f)

这是非常简单的构造函数。

public ADOTag(String sTagName){
  this.sTagName = sTagName;
}

我尝试从这个for循环中的Set中打印它,但是我得到类似的东西:com.xxx_ee.e_mail.MyTag@72433225

com.xxx_ee.e_mail.MyTag@12312325

我不确定为什么要显示而不只是"兄弟"和" senpai"。 我想打印并将其用作字符串,我无法想到会做什么,因为我已经尝试了很多东西。

我不确定该怎么办,任何人都可以帮助我?:)

解答: 我不得不在MyTag类中重写toString()方法:)

private void parseSubject(String sSubject) {

        Pattern aPattern = Pattern.compile("#(\\w+|\\W+)");
//this patter checks for '#anyword'
        Matcher aMatcher = aPattern.matcher(sSubject);

        this.m_sSubject = sSubject;

        while (aMatcher.find()) {
            String sTagPart = aMatcher.group();
            this.m_aTags.add(new MyTag(sTagPart));
                }
        for (MyTag s : m_aTags) {
            System.out.println(s);
        }

    }

4 个答案:

答案 0 :(得分:1)

您正在打印该对象。尝试覆盖MyTag类中的toString方法,并在打印对象时调用Object上的toString

或者如果你在MyTag类中有一个方法来获取tagName,那么就使用它。例如

之类的例子
System.out.println(s.getTag());

答案 1 :(得分:1)

当您执行System.out.println(s);时,您基本上会调用s.toString()。但是,由于s的类型为MyTagMyTag并未在其toString()上实现Object。拥有,它称之为超级。

Java中的每个对象都派生自toString()。对象的public MyTag(String sTagName){ this.sTagName = sTagName; } @Override public String toString() { return this.sTagName; } 打印出这个"乱码"这基本上是对象的名称及其所在的地址。

如果您希望对象执行其他类型的打印(如标记值),则需要自己覆盖该方法。例如:

config.action_dispatch.default_headers = {
    'X-Frame-Options' => 'ALLOWALL'
}

答案 2 :(得分:0)

看起来你的类MyTag缺少一个好的toString()实现,比如

@Override
public String toString() {
    return sTagName;
}

答案 3 :(得分:0)

System.out.println(s)调用System.out.println(Object对象),此方法只打印object.toString()。但是当你调用toString()为s时,你实际上是在调用Object.toString()。这就是Object.toString()的样子:

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

要更改此结果,请在MyTag类中覆盖toString()。