拆分字符串点分隔

时间:2014-07-18 10:55:11

标签: java android string

我正在手机和带有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。

使用"."分割字符串有什么问题吗?我已经完成了使用","拆分它的相同程序,并且它已正确地完成了。

3 个答案:

答案 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");

希望是。