繁体   English   中英

从SMS正文中提取帐号和余额的哪种方法更好?

[英]Which way is it better to extract Account number and Balance from a SMS body?

我正计划执行一项任务,以从用户的android移动收件箱中读取所有与银行相关的SMS,并从中提取其帐号和余额。 我猜这可以通过两种方式完成,

  1. 使用正则表达式从SMS身体陈述中提取数据此处链接 这无疑具有可以对任何银行余额消息进行通用表示的优点
  2. 将每个银行的模板消息存储在数据库中,并将其与读取的SMS进行比较以提取数据

我想知道哪种路径有效,或者还有其他方法可以做到吗?

两种方法具有不同的性质:

  • 选项1可能导致许多不同的, 复杂的正则表达式。 单独浏览您所链接的答案,我的头就转了。 含义:从开发人员的角度来看, 维护这样的正则表达式列表将不是一件容易的事。
  • 而对于选项2,您当然必须跟踪“模板”的集合,但是:一旦基础结构就绪,您唯一需要做的工作就是:添加新模板; 或改编它们。

因此,从“开发”方面来看,我倾向于选择选项2 ---因为这样的“模板”更容易由您管理。 您甚至不需要对Java语言有太多的了解即可处理此类模板。 它们只是文字; 到处都包含一些已定义的关键字 甚至可以考虑一下,告诉用户如何定义模板本身 他们知道银行发送的短信外观; 因此您可以考虑某种“导入”机制,您的APP会在其中提取SMS文本,然后用户告诉APP(一次)可以在其中找到相关部分!

关于运行时效率:在这里,我不会依赖别人做猜测。 相反:使用现实世界的数据进行实验; 并查看将SMS文本与大量复杂的正则表达式进行匹配是否比将其与简单得多的“模板”进行匹配便宜或更昂贵。

  1. 为每个存储库存储模板会花费更多的内存(如果为了提高效率而在启动时加载它们)和文件系统存储,而且正如您所说,不利的一面是要求以前知道每个存储库模板并正确设置用户应用程序以它。
  2. 使用正则表达式不会使文件系统存储更多的内存,但是它可能为看起来像银行消息的东西创建误报,但事实并非如此。 但是,这里的设施不需要知道所有的银行就可以正确地做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM