【发布时间】:2014-09-18 17:40:30
【问题描述】:
我的问题是所有字符串操作似乎都不起作用:
String received_message = new String(lmessage, 0, packet.getLength());
注意:received_message 是“start.hello.end”
if (received_message.startsWith("start.") && received_message.endsWith(".end"))
{
result = 1;
}
received_message = received_message.replace("start.", "");
received_message = received_message.replace(".end", "");
结果:
result 为 0,received_message 仍然是 "start.hello.end"
--
但这工作正常:
if (received_message.startsWith("s") && received_message.endsWith("d"))
{
result = 1;
}
received_message = received_message.replace("s", "");
received_message = received_message.replace(".", "");
如果我用一个字符来实现这个功能,它就可以工作。
如何让它适用于整个字符串?
【问题讨论】:
-
如果您将其更改为 received_message.indexOf(".start") != -1 && received_message.indexOf(".end") != -1) 是否有效?
-
不,它没有。替换功能也不会替换任何东西。
-
只是一些提示:构造字符串时不要使用平台默认字符集,使用类似:
new String(lmessage, 0, packet.getLength(), Charset.forName("UTF-8")) -
您的字符串中的某处可能有一些损坏/不可见的字符,尝试使用越来越多的字符来查看失败的位置。
-
是的,问题出在编码上。 Windows 服务器使用 Unicode,Android 系统使用 UTF-16 作为标准。非常感谢!
标签: java android string replace contains