我正在手机和带有SIM卡的电子设备之间通过短信开发一个用于M2M通信的应用程序。
当我从移动设备向设备发送命令时,此设备会向具有此结构的移动设备返回确认字符串。
确认确定:
DEV33456, 15, Date: yy/mm/dd-hh:mm:ss. OK
确认错误:
DEV33456, 15, Date: yy/mm/dd-hh:mm:ss. ERROR
现在在我的应用程序中,我必须管理此消息以获取相关信息。例如,消息的第一部分是标识代码(DEV33456),为了得到它,我将消息分开:
String[] separated = message.split(",");
String ident = separated[0]; //DEV33456
但是现在,我需要得到最后一个字(OK或ERROR)来确定消息是否正常。为此,我认为最简单的方法是使用OK或ERROR字之前的点来拆分消息。是整个消息中唯一的一点,所以它应该像这样拆分:
String[] separated = message.split(".");
String unused = separated[0]; //DEV33456, 15, Date: yy/mm/dd-hh:mm:ss
String error = separated[1]; //OK or ERROR
但它正在抛出ArrayIndexOutOfBoundsException
并对其进行调整我看到在separated
字符串数组的长度为2的第一行之后,它的长度为0。
使用"."
分割字符串有什么问题吗?我已经完成了使用","
拆分它的相同程序,并且它已正确地完成了。
答案 0 :(得分:7)
Java split
使用正则表达式,.
是正则表达式中的特殊字符。
您需要使用字符串"\\."
来转义它。
答案 1 :(得分:2)
为什么不使用
message.endsWith("OK")
答案 2 :(得分:0)
检查这是否是您想要的:
if(message.substring(message.length()-2, message.length())
.toLowerCase().contains("ok"))
Log.d("yes");
else
Log.d("no");
希望是。