【问题标题】:Reading text file with bufferedReader adds a whitespace, android使用 bufferedReader 读取文本文件会添加一个空格,android
【发布时间】:2014-08-12 11:53:54
【问题描述】:

我有这个方法可以从一个文本文件中获取一个数组列表:

private ArrayList<String[]> tempList(){
        String temp = null;
        ArrayList<String[]> tempList = new ArrayList<String[]>();
        try {
            BufferedReader bReader = new BufferedReader(new InputStreamReader(getAssets().open(getFilename())));
            while ((temp = bReader.readLine()) !=null){
            String[] value = temp.split(",");
                tempList.add(value);

            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return tempList;
    }

该文件只有用逗号分隔的字母,没有空格或空行。问题是列表的第一个字母前面有一个空格。其他字母都没问题。

这是包含本地字母表的 txt 文件:

Α,Β,Γ
Δ,Ε,Ζ
Η,Θ,Ι
Κ,Λ,Μ
Ν,Ξ,Ο
Π,Ρ,Σ
Τ,Υ,Φ
Χ,Ψ,Ω

知道有什么问题吗?

【问题讨论】:

  • 我已经尝试过你的代码并且运行良好,你调试过代码然后你就知道 templList 的更新值了。
  • 如果字符串中有任何前导或尾随空格,请使用 String 类的 trim() 函数..

标签: java android arraylist


【解决方案1】:

可能是一个零宽度的空格,一个 BOM,'\uFEFF' 通常用作第一个字符(在 Windows 下由记事本使用)来标记 Unicode 文件。所以 Windows 可以区分 UTF-8 和普通的本地 ANSI。

如果在编辑过程中复制了第一行,然后发生了字符编码转换,那就是解释。

temp = temp.replace("\uFEFF", "");

一般来说,删除 BOM 是个好主意。

【讨论】:

  • @Joop 非常感谢你!在尝试删除我能想到的所有类型的空白并感到沮丧之后,我终于能够解决我的问题!
【解决方案2】:

只需按照@user3505725 的建议对您的代码进行一些更改即可:

String[] value = temp.trim().split(",");

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2013-04-12
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 2016-10-15
    • 2017-04-02
    • 1970-01-01
    相关资源
    最近更新 更多