设为首页 加入收藏

TOP

用String分析固定格式的文本
2014-11-24 08:24:42 来源: 作者: 【 】 浏览:0
Tags:String 分析 固定 格式 文本

  前段时间做一个任务:从 log文件 中提取出 java异常(Exception)的相关信息。 log文件的每一行都有固定的格式:包括 时间戳、信息类型、信息内容 等等。


  一开始我想这是不是得用编译原理那套工具 lex、yacc 来做?当时做大作业的时候感觉它们真的是无比强大啊!但仔细一想,觉得没有必要:


每行文本有多项数据,每项数据都识别为一个记号(token),太麻烦了!


没有什么语法,每一行就是各项数据的一个组合,顺序是一成不变的。


  因此我想直接用 String 的各个方法来分析算了,结果事半功倍!其中用到了如下一些方法:


split


  这是最重要的一个方法,拆分各个字段就靠它了,如:


"a b c".split(" ")
// 将得到 {"a", "b", "c"}


  分隔符是一个正则表达式:


"a,b:c".split(",|:")
// 也会得到 {"a", "b", "c"}


String 中正则表达式的格式可看: 正则表达式格式简介,见这里


replaceAll


  replaceAll 是替换字符串的方法,但我用的却是它的隐藏功能:删除子字符串(替换为空字符串):


"abc;".replaceAll(";", "")
// 将得到 "abc"


replaceAll 的第一个参数是正则表达式。


trim


  一般用于去掉头尾的空格:


" a bc ".trim()
// 将得到 "a bc"


indexOf 和 lastIndexOf


  这是一套用于定位字符/子字符串的重装方法。需要注意的是 indexOf('a') 比 indexOf("a") 的效率要高,尽管它们的作用相同。


substring


  这是一套截取子字符串的重装方法。 分析文本时可配合 indexOf 使用。


startsWith 和 endsWith 以及 contains


  判断是否包含某字符串。


  以上各个操作也许看起来并不如何强大,但是如果组合、连接起来用,分析固定格式的文本绰绰有余!


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言产生随机数 下一篇编译Android4.0提示jdk版本错误--..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·微服务 Spring Boot (2025-12-26 18:20:10)
·如何调整 Redis 内存 (2025-12-26 18:20:07)
·MySQL 数据类型:从 (2025-12-26 18:20:03)
·Linux Shell脚本教程 (2025-12-26 17:51:10)
·Qt教程,Qt5编程入门 (2025-12-26 17:51:07)