博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
处理QQ聊天群记录的算法
阅读量:5894 次
发布时间:2019-06-19

本文共 3154 字,大约阅读时间需要 10 分钟。

  hot3.png

写个程序,分析QQ群聊天记录的,一个qq号码对应一个JSON,JSON里放聊天日期date,qq号码和聊天内容.

聊天记录的形式:
xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx)
xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx

xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx)
xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxx
按行读取,如果出现xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx)的形式,就记录取得的日期和qq 继续按行读取把聊天记录直到下次遇到xxxx年xx月xx日 xx时xx分xx秒 (xxxxxxxxx)的形式,在遇到之前生成一json,遇到后清空json 放遇到的形式的日期和qq,循环。
代码:
public void add2DB(JSONObject resultObj){	QQImportDao dao = QQImportDao.getInstance();	String content = Tools.toStr(resultObj.get("content"));	if(content.length()>80){//聊天记录内容大于80就处理		String title  = content.length()>150?content.substring(0, 150):content;		title = title.replace("
", ""); String topicQQ = Tools.toStr(resultObj.get("qq")); String date = Tools.toStr(resultObj.get("date")); if(!dao.isExist("select 1 from forum..f_topic where title='"+title+"' and topicQQ='"+topicQQ+"'")){ dao.add(topicQQ, title,content,date); } }} public void process(){ File file = new File(getFileName()); if(!file.exists()){ System.err.println("文件不存在!"); return ; } try {// BufferedReader br = new BufferedReader(new FileReader(file));// String line = br.readLine();// System.out.println(line); Scanner s = new Scanner(file); int startFlag = 0; String date="",qq=""; StringBuilder content= new StringBuilder();// String qunNum=""; JSONObject resultObj = new JSONObject(); while(s.hasNextLine()){ String line = Tools.toStr(s.nextLine()); if(line.length()>0){ if(line.indexOf("豪迪软件")!=-1)continue;// JSONObject qunBeginObj = QQRecordUtils.parseBeginRecord(line);// if(Boolean.parseBoolean(Tools.toStr(qunBeginObj.get("isBegin")))){// qunNum = Tools.toStr(qunBeginObj.get("qq"));// content= new StringBuilder();// continue;// } JSONObject beginObj = QQRecordUtils.parseBeginRecord(line); if(Boolean.parseBoolean(Tools.toStr(beginObj.get("isRecordBegin")))){ startFlag++; date = Tools.toStr(beginObj.get("date")); qq = Tools.toStr(beginObj.get("qq")); if(startFlag==1){ //第一次遇到 初始化date qq content resultObj.put("date", date); resultObj.put("qq", qq); content= new StringBuilder(); continue; } if(startFlag%2==0){ //第二次遇到 生成resultObj 处理resultObj 重新初始化resultObj content.append("联系QQ:"+resultObj.get("qq")); resultObj.put("content", content); System.out.println(resultObj);//处理完整的 add2DB(resultObj); resultObj = new JSONObject(); resultObj.put("date",date); resultObj.put("qq", qq); content= new StringBuilder(); continue; } if(startFlag%2==1){ //第三次遇到 content.append("联系QQ:"+resultObj.get("qq")); resultObj.put("content", content); System.out.println(resultObj);//处理完整的 add2DB(resultObj); resultObj.put("date", date); resultObj.put("qq", qq); content= new StringBuilder(); continue; } }else{ content.append(line+"
"); } } } //收尾: if(Tools.toStr(content).length()>0){ resultObj.put("content", content); System.out.println(resultObj);//处理完整的 } } catch (Exception e){ e.printStackTrace(); }}

转载于:https://my.oschina.net/wrean/blog/330052

你可能感兴趣的文章
第6天:XHTML代码规范
查看>>
阿里云数据库Greenplum版发布啦
查看>>
Cocos2d-x3.2 Progress进度条
查看>>
无法在“EntityFramework”已存在的情况下创建影像复制该文件的解决方案
查看>>
iOS开发UI篇—在UItableview中实现加载更多功能
查看>>
SQL Server删除distribution数据库
查看>>
您还有心跳吗?超时机制分析
查看>>
【DataGuarad】ORA-1153 trying to turn on Flashback for Physical Standby Database 2011-10-
查看>>
[Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具
查看>>
如何分析D状态进程
查看>>
【Linux】Bonding驱动选项
查看>>
算法系列15天速成——第三天 七大经典排序【下】
查看>>
2014 网选 广州赛区 hdu 5025 Saving Tang Monk(bfs+四维数组记录状态)
查看>>
Write on ……… failed: 112(failed to retrieve text for this error. Reason: 15105)
查看>>
前面小知识块
查看>>
Java中的锁
查看>>
【Oracle】lsnrctl reload 命令操作
查看>>
android事件总线
查看>>
Android WebView 无法打开天猫页面
查看>>
【Python】字符串的换行 和 引入其他py文件
查看>>