2015-12-16 7 views
0

В моем приложении мне нужно отсканировать все пользовательские sms и отфильтровать его на основе некоторых ключевых слов. Для этого я могу напрямую использовать smsBody.contains(filterKey). но предположим, что ключ фильтра похож на Вы заработали <> + Награды, где <> должны иметь некоторые цифры. т.е. вы заработали 1000 Награда, если эта строка входит в смс, я должен отклонить это. Я добавил мой код нижеИгнорировать SMS, если он содержит ключевое слово

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() возвращает истину, только если точный ключ приходит, но в этом случае ключ не может быть точным. Как мне изменить этот метод?

+0

Что вы подразумеваете под «reject» и «ignore»? –

+0

Что означает **, если эта строка входит в смс, я должен отклонить это **? –

+0

Мне нужно избегать этих суставных смс, значит, я не хочу этого смс. Я должен найти, если ключ найден в теле sms – droidev

ответ

2

Я не очень-то понимаю вас очень хорошо, но дайте мне знать, если я что-то пропустил. Regex будет делать работу:

public boolean shouldIgnore(String body) { 
    Pattern p = Pattern.compile("you have earned [0-9]+ Rewards"); 
    Matcher m = p.matcher(body); 
    return m.find(); 
} 

[0-9]+ выглядит для любого целого числа между you have earned и Rewards и Сличитель вернется true если находит образец в body, иначе вернется false.

Кроме того, вы можете использовать метод String.matches, как описано в комментариях.

+0

Почему бы вам не объяснить, почему то, что вы публикуете, должно работать? * Попробуйте это *, * попробуйте это * - действительно, IMHO, это не лучший стиль ответа. –

+1

Я не скажите что-нибудь об удалении.Если вы хотите получить как можно больше upvotes, я добавлю больше объяснений в ответ. Это совет. Возьмите его, если хотите. Вам не обязательно. позже удалили. –

+0

@stribizhev Спасибо за это. – Aleksandar