Java程序收集推文,一些字符串行为不规律

时间:2015-12-06 17:48:50

标签: java string

我正在开发一个程序,该程序使用twitter4j API来检索推文并使用它们来分析群集,但我收集的2000条推文中约有1条出现了最奇怪的问题。

我正在用一组字符串中的前面的用户名存储每条原始推文,我还有一组字符串,其中我存储了“已清理”的推文,这意味着我已将每个字母设置为小写,删除任何不是字母数字的字符,并删除所有用户名。

在使用干净的推文进行一些聚类分析之后,他们使用JSON格式的字符串,然后我将干净的推文与原始推文交换,下面的代码行显示了一旦找到正确的索引就会替换它们。 (jsonResults是一个包含JSON格式的所有干净推文的字符串,tweetIndex是已打开的推文开始的索引,espapedOrigTweet是一个包含用户名和原始推文的字符串,已经格式化为在JSON中工作):

jsonResults = jsonResults.substring(0, tweetIndex) + escapedOrigTweet + jsonResults.substring(tweetIndex + cleanedTweet.length());

大约99.95%的时间它像魅力一样,最终结果是一个长字符串,所有原始推文和用户名都是JSON格式,但有0.05%的时间它会失败。

当它正常工作时,最终的JSON字符串包含所有原始推文并以如下所示开始:

  

{“results”:{“numOfClusters”:...

但是,当它失败时,最终的JSON字符串会在推文中间的某处开始出现如下问题:

  

#MTVStars The Vamps https://t.co/3PGQWnxUMv“,”0258:......

以下是我尝试过的一些调试输出。我有一行代码,在收到所有推文后,打印原始推文和用户以及清理后的内容。这是代码:

System.out.println(twt + " --- " + cleanTweet(twt));

以下是普通推文的这一行的输出结果:

  

@ mangonicci13 =保守党捐赠卡https://t.co/rCwZCZBV7k ---保守捐赠卡

这是推文的那一行的输出,这是一个问题:

  

#MTVStars The Vamps https://t.co/3PGQWnxUMv --- 1 1投票mtvstars vamps的vamily

如果有人可以帮助我能够识别出有关这些破碎的推文的任何内容,以便可以更改它们以便不会导致字符串表现不正常,我将非常感激。谢谢你的阅读!

1 个答案:

答案 0 :(得分:-1)

我能够找到导致这些字符串表现得如此不规律的问题。为此,我让每个坏字符串打印unicode中每个字符的十进制值。

这样做,我很快发现每个问题字符串都有问题,每次有一个值为13的字符,一个"回车"字符。我编写了一个方法来从所有推文字符串中删除任何带有int值13的字符,并且从那时起就没有遇到过问题。