我又来发表旧作了…没错还是旧作,不过这个比较新了,两个月之前写的
有人问为什么要做这个东西呢?又被你发现了,我是自己想用才动手来做的………..hum,事情的原因就是某傻逼有段时间比较冷淡,上Q总是只发几个哦或者是纯表情…我略略不高兴就做了这个东西,一晚上搞定,两个小时不到。也不是为了证明什么,也不是想干嘛,就是想把这些东西数字化一下,然后自己看看。
你也想分析下你的他/她跟你的对话是什么情况吗?!你也想来试炼一下,测试一下你们之间是什么情况吗!你也想试试这个东西会不会带来感情危机吗!(开玩笑的啦,其实只是闹着玩的。我建议大家除了可以拿身边的人分析一下,也可以拿些你感觉奇怪的人来分析下,看看他是不是特别爱发“哦/嗯”,看看他是不是很爱发纯表情~~当然如果有人因为我写这个6KB的东西而分手了的话…我不负任何责任= =慎用啊各位
以下先上使用方法:
首先你需要的是QQ聊天记录,对于这个,我这里推荐几种方法
1.你可以打开QQ的消息管理器,然后导出消息(保存成txt)..之前我没有加上选择日期功能,现在已经加上去了*( ̄▽ ̄)* ,所以选好时间段就可以使用
2.可以查看聊天记录,这样复制起来有点麻烦…适合短期内的分析,直接用鼠标选了复制就行。
然后怎么用呢,下面是截图

这里用我和老妈的记录做下示范….有人留意到斜杠,没错,那个就是你给别人加过的注释,你可以留意下QQ聊天记录里面对方的称号,如果你改了备注的话是会跟着变的,在“我”旁边的框里写上你自己的Q名~~~~然后~~把那一大段的聊天记录全部粘贴到很大的框里面~~~然后点击“开始试炼”,就行了
如果你分析的时候输入对方的称呼不完整的话(就是如果聊天记录里对方是有两个以上称呼,而你只打了一个),在分析对话数量的时候会出现错误:因为这样会分析对方的一部分记录然后加上所有你说的话,左边就是例子你可以看到只输入了一个称呼之后数据有些变化,反正这样分析出来的一部分结果不正确,你知道就行了
关于技术讨论~~这里貌似就没什么好说的了,分隔字符用的是spit,去掉空格回车那些东西用的是replace。非常简单的东西,至于循环这里说一下。因为要检测一条消息的判断方法不能是回车,只能是检测到下一个日期(每条记录之前都会有个日期)或者检测到结尾才能是一条消息的结束。而且我们必须检查这条记录的发出者是谁。所以我用的方法是用一些值来记录该消息的状态。本来是用bool值的,但是综合考虑还要判断发出者,所以整理下弄了个枚举。我不确认这样的做法是好的,欢迎大家给我建议。
//先是枚举
enum Flag { Me,You,No}
//下面是循环
foreach (string s in QQlist)
{if (f == Flag.Me)
{
Isay.Add(s);
f = Flag.No;
}
else if (f == Flag.You)
{
Yousay.Add(s);
f = Flag.No;
}
else if (ContainS(MyName,s))
{f = Flag.Me;}
else if (ContainS(YourName, s))
{f = Flag.You;}
}
//这里介绍下日期的比较,用的是datetime类和dateTimePicker控件
DateTime date1 = new DateTime(Convert.ToInt32(time[0]), Convert.ToInt32(time[1]), Convert.ToInt32(time[2].Substring(0, 2)));
//我发现addyears这些方法并不是很好的选择
//date1.AddYears(Convert.ToInt32(time[0]));
//date1.AddMonths(Convert.ToInt32(time[1]));
//date1.AddDays(Convert.ToInt32(time[2].Substring(0,2)));
if (DateTime.Compare(date1, dateTimePicker1.Value) > 0 && DateTime.Compare(date1, dateTimePicker2.Value)<0)
return true;
最后当然是下载啦

想玩不知道找谁来玩==……
你是?
哇哈哈哈哈