Android CSV 字符串中的换行符
Android line break in string from CSV
我正在构建一个 Android 应用程序,我想在其中从 CSV 文件读取数据并将其显示在某些文本视图中。最后一列可以有更大的文本,其中有换行符。
我正在读入字符串数组的示例 CSV 行:
Cat1; Cat2; Sample Text\nwith a line break
将字符串设置为文本视图的文本后,我将在 device/simulator:
上获取它
Sample Text\nwith a line break
如果我这样直接设置字符串:
textView.setText("Sample Text\nwith a line break");
或者如果我像这样替换不同的占位符:
(CSV 中的字符串:带有换行符的示例文本 zzz)
textView.setText(someArray[2].replace("zzz", "\n"));
它会给我想要的结果:
Sample Text
with a line break
我也尝试了 .replace("\n", "\n") 但这也没有帮助。
我究竟做错了什么?这可能是一些基本的东西。
我自己提供 CSV,因此我也可以更改其中的内容。
提前致谢。
编辑1:
这就是我如何将 CSV 读取到字符串数组
int choosenfile = getResources().getIdentifier("test", "raw", getPackageName());
InputStream is = getResources().openRawResource(choosenfile);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
String line = "";
try{
while ((line = reader.readLine()) != null) {
String[] tokens = line.split(";", -1);
someArray[0] = tokens[0];
someArray[1] = tokens[1];
someArray[2] = tokens[2];
}
} catch (IOException e1) {
Log.e("MainActivity", "Error" + line, e1);
e1.printStackTrace();
}
给定一个文件 res/raw/data.csv
,其内容为:
Cat1; Cat2; Sample Text\nwith a line break
以及下面的Java代码
String[] someArray = new String[3];
InputStream is = getResources().openRawResource(R.raw.data);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
String line = "";
try{
while ((line = reader.readLine()) != null) {
String[] tokens = line.split(";", -1);
someArray[0] = tokens[0];
someArray[1] = tokens[1];
someArray[2] = tokens[2];
}
} catch (IOException e1) {
Log.e("MainActivity", "Error" + line, e1);
e1.printStackTrace();
}
TextView tv = findViewById(R.id.textView);
tv.setText(someArray[2].replace("\n", "\n"));
它按预期工作。
但您可能需要考虑以下内容以轻松处理 CSV 文件:
此外,您当前的循环将在每次迭代时覆盖 someArray
,导致仅包含文件中最后一行的数据。还请确保在使用完毕后关闭流。
我正在构建一个 Android 应用程序,我想在其中从 CSV 文件读取数据并将其显示在某些文本视图中。最后一列可以有更大的文本,其中有换行符。
我正在读入字符串数组的示例 CSV 行:
Cat1; Cat2; Sample Text\nwith a line break
将字符串设置为文本视图的文本后,我将在 device/simulator:
上获取它Sample Text\nwith a line break
如果我这样直接设置字符串:
textView.setText("Sample Text\nwith a line break");
或者如果我像这样替换不同的占位符:
(CSV 中的字符串:带有换行符的示例文本 zzz)
textView.setText(someArray[2].replace("zzz", "\n"));
它会给我想要的结果:
Sample Text
with a line break
我也尝试了 .replace("\n", "\n") 但这也没有帮助。
我究竟做错了什么?这可能是一些基本的东西。
我自己提供 CSV,因此我也可以更改其中的内容。
提前致谢。
编辑1: 这就是我如何将 CSV 读取到字符串数组
int choosenfile = getResources().getIdentifier("test", "raw", getPackageName());
InputStream is = getResources().openRawResource(choosenfile);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
String line = "";
try{
while ((line = reader.readLine()) != null) {
String[] tokens = line.split(";", -1);
someArray[0] = tokens[0];
someArray[1] = tokens[1];
someArray[2] = tokens[2];
}
} catch (IOException e1) {
Log.e("MainActivity", "Error" + line, e1);
e1.printStackTrace();
}
给定一个文件 res/raw/data.csv
,其内容为:
Cat1; Cat2; Sample Text\nwith a line break
以及下面的Java代码
String[] someArray = new String[3];
InputStream is = getResources().openRawResource(R.raw.data);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8));
String line = "";
try{
while ((line = reader.readLine()) != null) {
String[] tokens = line.split(";", -1);
someArray[0] = tokens[0];
someArray[1] = tokens[1];
someArray[2] = tokens[2];
}
} catch (IOException e1) {
Log.e("MainActivity", "Error" + line, e1);
e1.printStackTrace();
}
TextView tv = findViewById(R.id.textView);
tv.setText(someArray[2].replace("\n", "\n"));
它按预期工作。
但您可能需要考虑以下内容以轻松处理 CSV 文件:
此外,您当前的循环将在每次迭代时覆盖 someArray
,导致仅包含文件中最后一行的数据。还请确保在使用完毕后关闭流。