java - 如何在 Android Studio 中从 CSV 文件导入时从 SQLite DB 中删除特殊字符?

标签 java android sqlite csv

我有一个名为条形码的 CSV 文件,我已成功将该文件导入到我的 SQLite 数据库中,但问题是数据按 CSV 文件中的内容保存。
我得到的数据:8.90103E+12,我想要的数据:8901030382253。

示例:
商品 - EAN_CODE
100047253 - 8.90103E+12
100047252 - 8.90103E+12

我有两列,Ean_code 中的数据未正确进入我的数据库。 我已经使用了修剪功能,但 o/p 保持不变。

我的代码:

if (exportDir.exists()) {
            FileReader file = null;
            try {
                file = new FileReader(exportDir);

                BufferedReader buffer = new BufferedReader(file);
                String line = "";
                int iteration = 0;
                ArrayList<MasterDataModel2> arrayList_stock2 = new ArrayList<>();

                while ((line = buffer.readLine()) != null) {
                    if (iteration == 0) {
                        iteration++;
                        continue;
                    }
                    //StringBuilder sb = new StringBuilder();
                    String[] str = line.split(",");

                    arrayList_stock2.add(new MasterDataModel2(str[0].replace("\"", ""), str[1].replace("\"", "")));
                    //arrayList_stock2.add(new MasterDataModel2(str[0],str[1]));

                    Log.d("insertTotal", "Msg:" + lastId);
                }
                Log.e("size",String.valueOf(arrayList_stock2.size()));
                db.addAllMasterData2(arrayList_stock2);

            } catch (FileNotFoundException e) {
                e.printStackTrace();
                //CallingImportantMethod.showToast(this, "File is not available");
            } catch (IOException e) {
                e.printStackTrace();
                //CallingImportantMethod.showToast(this, "Something wents wrong");
            }
        }

最佳答案

下面的代码不正确。

arrayList_stock2.add(new MasterDataModel2(str[0].replace("\"", ""), str[1].replace("\"", "")));

\ 是特殊转义字符,因此需要 \\ 对其进行转义。即使与原始问题无关,建议您阅读 this清楚地了解 java 中反斜杠的用法。

回到问题,我猜你真的不需要调用str[].replace()。如果我错了请纠正我。

arrayList_stock2.add(new MasterDataModel2(str[0].trim(), str[1].trim()));

我认为上面的代码段就足够了。

编辑:对于您的实际问题,您可以使用下面的内容。为了避免 null 问题,您可能还需要进行检查。

if(str[1] != null) {
    Double eanCodeDouble = Double.parseDouble(str[1]);
    NumberFormat nf = NumberFormat.getInstance();
    String eanCodeString = nf.format(eanCodeDouble);
    System.out.println(resultedString);
} else {
    String eanCodeString = '';
}

if(str[0] == null) {
   str[0] = '';
}
    arrayList_stock2.add(new MasterDataModel2(str[0].trim(), eanCodeString));

关于java - 如何在 Android Studio 中从 CSV 文件导入时从 SQLite DB 中删除特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57199431/

相关文章:

java - 解析 jpanel 中的输入,编译正常但无法运行。请解释

java - Jackson 反序列化 convertValue 应该在空值上失败

android - 滚动时ListView "coming back"

android - 抱歉,无法播放此视频 - 将 mp4 流式传输到 android

python - 一种用于跟踪数据库中表历史记录的命令行/API 工具,它是否存在,或者我应该去开发一个吗?

java - java读取txt文件中的分数

java - Spring Tool Suite (STS) 启动错误

android - 将私有(private)文件写入内部存储

sql - SQLite子查询尝试查找另一列中是否不存在ID

ruby-on-rails - activerecord 内存共享缓存