用String分析固定格式的文本

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

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

  1. 每行文本有多项数据,每项数据都识别为一个记号(token),太麻烦了!
  2. 没有什么语法,每一行就是各项数据的一个组合,顺序是一成不变的。

  因此我想直接用 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

  判断是否包含某字符串。


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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值