【发布时间】:2015-12-16 10:43:10
【问题描述】:
在我的应用程序中,我必须扫描所有用户短信并根据一些关键字对其进行过滤。为此我可以直接使用smsBody.contains(filterKey)。但假设过滤器键类似于 您已获得+Rewards,其中 应该有一些数字。即,您已获得 1000 奖励,如果此字符串出现在短信中,我必须拒绝。我在下面添加了我的代码
if (!shouldIgnore(smsBody)) {
//further process
} else {
LogUtils.LOGD(TAG, "ignoring message : " + smsBody);
}
public boolean shouldIgnore(String body) {
ListIterator<String> listIterator =mList.listIterator()
while(listIterator.hasNext()){
String key = listIterator.next();
if(smsBody.contains(key)){
return true;
}
}
return false
}
String.contains() 仅在准确的键出现时才返回 true,但在这种情况下,键可能不准确。 如何修改这个方法?
【问题讨论】:
-
“拒绝”和“忽略”是什么意思?
-
如果这个字符串出现在短信中我必须拒绝它是什么意思?
-
我必须避免那种特殊的短信,这意味着我不想要那种短信。我必须查找是否在短信正文中找到密钥
-
您的意思是要从系统中删除该短信?
-
使用正则表达式
you have earned \\d+ Rewards。如果找到匹配项,则拒绝短信。if ("you have earned 1000 Rewards".matches("you have earned \\d+ Rewards")) {System.out.println("REJECT IT!");}.
标签: android regex filter ignore-case