我正计划执行一项任务,以从用户的android移动收件箱中读取所有与银行相关的SMS,并从中提取其帐号和余额。我猜这可以通过两种方式完成,
如link here所述,使用RegEx从SMS正文中提取数据。这无疑具有可以对任何银行余额消息进行通用表示的优点
将每个银行的模板消息存储在数据库中,并将其与读取的SMS进行比较以提取数据
我想知道哪种路径有效,或者还有其他方法可以做到吗?
最佳答案
两种方法具有不同的性质:
选项1可能导致许多不同的,复杂的正则表达式。单独浏览您所链接的答案,我的头就转了。含义:从开发人员的角度来看,维护这样的正则表达式列表将不是一件容易的事。
而对于选项2,您当然必须跟踪“模板”的集合,但是:一旦基础结构就绪,您唯一需要做的工作就是:添加新模板;或改编它们。
因此,从“开发”方面来看,我倾向于选择选项2 ---因为这样的“模板”更容易由您管理。您甚至不需要对Java语言有太多的了解即可处理此类模板。它们只是文字;到处都包含一些已定义的关键字。
甚至可以考虑告诉您的用户如何自己定义模板!他们知道银行发送的短信的外观;因此,您可以考虑某种“导入”机制,您的APP会在其中提取SMS文本,然后用户告诉APP(一次)可以在其中找到相关部分!
关于运行时效率:在这里,我不会依赖别人做猜测。相反:使用现实世界的数据进行实验;并查看将SMS文本与大量复杂的正则表达式进行匹配是否比将其与简单得多的“模板”进行匹配便宜或更昂贵。
关于java - 从SMS正文中提取帐号和余额的哪种方法更好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41484286/