【问题标题】:String created from input stream not matching up in if statement从输入流创建的字符串在 if 语句中不匹配
【发布时间】:2016-11-15 00:44:13
【问题描述】:

由于某种原因,我的都柏林字符串与我从资产文件夹中的文本文件中获得的字符串不匹配。 这是我获取字符串的代码

InputStream is;
String text = "";
try {
    is = getAssets().open("loc.txt");
    int size = is.available();
    byte[] buffer = new byte[size];
    is.read(buffer);
    is.close();
    text = new String(buffer);
} catch (IOException ex) {
    ex.printStackTrace();
}
this.city = text;

这里是我比较字符串的地方

Toast.makeText(this, city + " this is name stored as city in onMapReady in map activity", Toast.LENGTH_LONG).show();
double lat, lon;
city.trim();
if (city.trim().equalsIgnoreCase("Dublin")) {
    Toast.makeText(this, city + " getting into dublin in map activity", Toast.LENGTH_LONG).show();
    lat = 53.343908;
    lon = -6.267554;
}

它在 if 语句之前打印 Dublin,但从不到达内部。 谢谢

【问题讨论】:

  • 您说“它打印都柏林”,但您的意思是说“它打印都柏林”吗? 'd' 是大写还是小写?
  • 你试过equalsIgnoreCase和修剪字符串吗?
  • trim() 两个字符串
  • city.trim().equalsIgnoreCase("都柏林")
  • 字符不匹配或读取尾随 \r\n 或空格等。请在此处查看此答案stackoverflow.com/questions/16712115/…

标签: java android inputstream


【解决方案1】:

我解决了这个问题。通过检查字符串的长度,它说长度是 7,而应该是 6。我将文本文件保存为 UTF-8 而不是 ANSI。当我改变它的长度是 6 并且程序运行良好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 2019-06-26
    • 1970-01-01
    • 2018-10-02
    • 2018-09-29
    • 1970-01-01
    相关资源
    最近更新 更多