2017-01-05 20 views
1

我正在計劃一項任務,從用戶的android移動收件箱中讀取所有與銀行有關的短信,並從中提取他們的賬號和餘額。我猜這可能通過兩種方式來完成的,從SMS正文中提取帳號和餘額哪種方式更好?

  1. 使用正則表達式的說明link here從SMS身上提取數據。這當然有在數據庫中給通用表示任何銀行結餘消息
  2. 店每家銀行的一個模板信息,並將其與讀短信比較來提取數據

我想優勢知道哪個路徑是有效的或者是否有任何其他方式來做到這一點?

+0

感謝您快速明確的回覆@GhostCat – siva

回答

3

兩種方法各有不同的特質:

  • 選項1可能會導致很多不同,複雜正則表達式。單獨看着你連接的答案讓我頭暈目眩。含義:維護從開發人員的角度來看,這樣的正則表達式列表並不是一件容易的事情。
  • 鑑於方案2,當然你必須跟蹤你的「模板」集合,但是:一旦你的基礎設施就位,你唯一需要的工作就是:添加新的模板;或適應它們。

所以,從一個「發展」的努力方面,我傾向於選擇2 ---因爲這樣的「模板」更容易由你來管理。爲了處理這種模板,你甚至不需要太多的Java語言理解。他們只是文字;包含一些定義的關鍵字這裏和那裏。 你甚至可以考慮告訴你的用戶如何定義自己的模板!他們知道如何從他們的銀行看起來像短信;所以你可以考慮一些「導入」機制,在這裏你的應用程序將短信文本提取出來,然後用戶告訴應用程序(一次)在那裏可以找到相關部分!

關於運行效率:我不會依賴於在這裏進行猜測的人。相反:用真實世界的數據進行實驗;並查看與較大的一組複雜正則表達式匹配的SMS文本是否比將它們與更簡單的「模板」進行匹配更便宜或更昂貴。

2
  1. 存儲每個銀行的模板花費更多的內存(如果你加載它們在啓動時的效率)和文件系統存儲,也可作爲你所說,有需要的缺點以前知道每家銀行的模板和正確設置用戶應用程序。
  2. 使用正則表達式不會花費文件系統存儲更多的內存,但它可能會創建類似銀行消息的錯誤肯定,但事實並非如此。不過,爲了做到這一點,不需要知道所有的銀行。
+1

正則表達式解決方案的好處是不夠健壯。 – GhostCat