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