【问题标题】:Android Java String operations not workingAndroid Java字符串操作不起作用
【发布时间】: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


【解决方案1】:

问题在于编码。 Windows 服务器使用 Unicode,Android 系统使用 UTF-16 作为标准。所以字符串包含一些不可见的字符..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 2011-08-29
    相关资源
    最近更新 更多