Android 当两个字符串都包含单词“ARM”时,如何区分两个字符串“ALARM”和“ARM”

Android 当两个字符串都包含单词“ARM”时,如何区分两个字符串“ALARM”和“ARM”,android,Android,我正在读短信,当“报警”这个词出现时,我会执行某个代码,当ARM出现时,我会执行其他操作。传入的sms可能包含的不仅仅是这些单词,例如ABCDEF、ARM、ALARM。或警报、ABCDEF等。 我想检查消息中包含哪些单词,并触发代码的不同部分 我的问题是单词ALARM包含两个单词。警报和手臂。因为我对字符串使用了“contains”方法,所以如果出现单词ALARM,它也会触发ARM。 有没有办法区分这一点 我使用的是: if (messageList.get(0).getMessageConte

我正在读短信,当“报警”这个词出现时,我会执行某个代码,当ARM出现时,我会执行其他操作。传入的sms可能包含的不仅仅是这些单词,例如ABCDEF、ARM、ALARM。或警报、ABCDEF等。 我想检查消息中包含哪些单词,并触发代码的不同部分

我的问题是单词ALARM包含两个单词。警报和手臂。因为我对字符串使用了“contains”方法,所以如果出现单词ALARM,它也会触发ARM。 有没有办法区分这一点

我使用的是:

if (messageList.get(0).getMessageContent().contains("ALARM")) {

                btnAlarm.setBackgroundResource(R.drawable.buttonstyles_highlight);
            } else {
                btnAlarm.setBackgroundResource(R.drawable.plainbuttonstyles);
            }

        if (messageList.get(0).getMessageContent().contains("ARM")) {
            btnArm.setBackgroundResource(R.drawable.buttonstyles_highlight);
        } else {
            btnArm.setBackgroundResource(R.drawable.plainbuttonstyles);
        }
除了contains之外,我还尝试了其他一些方法,但是我无法让它工作。

为什么不使用equals方法来比较字符串呢

使用此POC:

if (messageList.get(0).getMessageContent().equals("ALARM")) {

            btnAlarm.setBackgroundResource(R.drawable.buttonstyles_highlight);
        } else {
            btnAlarm.setBackgroundResource(R.drawable.plainbuttonstyles);
        }

    if (messageList.get(0).getMessageContent().equals("ARM")) {
        btnArm.setBackgroundResource(R.drawable.buttonstyles_highlight);
    } else {
        btnArm.setBackgroundResource(R.drawable.plainbuttonstyles);
    }

将消息解析为一个单词列表,其中一个单词是一个字母序列,旁边没有其他字母。正则表达式可用于:

String[] words = message.split("[^a-zA-Z]+");
然后检查关键字是否包含在单词列表中。例如:

List<String> wordList = Arrays.asList(words);
if (wordList.contains("ALARM")) { ... }
if (wordList.contains("ARM")) { ... }

这个问题似乎离题了,因为它是一个简单的字符串比较!为什么你不检查警报,然后在同一时间手臂,所以如果这是真的,那么这两个字是警报,但是如果其中一个是假的,那就是单词ARM,为什么不使用等量代替?因为单词可能在消息的中间,因为消息可能有一个以上的单词,这对我来说M8工作。非常感谢。我不知道那件事
    int alarmIndex = messageList.get(0).getMessageContent().indexOf("ALARM");
    int armIndex = messageList.get(0).getMessageContent().indexOf("ARM");

    if(alarmIndex != -1 && alarmIndex < armIndex) {
        // Contains ALARM
        ...
    }
    else if(armIndex != -1){
        // Contains ARM
        ...
    }