新行字符\n无法在textView Android中正确显示

Mik*_*ike 20 sqlite android textview

我知道如果你这样做的话

myTextView.setText("This is on first line \n This is on second line");
Run Code Online (Sandbox Code Playgroud)

然后它会像这样正确显示:

这是在第一行
这是在第二行

当我将该字符串存储在数据库中然后将其设置为视图时,它显示如下:

这是在第一行\n这是在第二行

这是我用来从数据库中提取字符串的代码行:

factView.setText(factsCursor.getString(MyDBAdapter.FACT_COLUMN));
Run Code Online (Sandbox Code Playgroud)

我简单地填充从一个文本文件,其中每行是一个新进入的表,这样的线路是这样的数据库"这是第一行\n这是第二行",并存储为文本.

有没有理由不正确显示\n字符?它必须与数据库中的字符串有关.有什么建议?

Blu*_*ell 34

我发现这个问题Austyn Mahoney的答案是正确的,但这里有一点帮助:

   private String unescape(String description) {
    return description.replaceAll("\\\\n", "\\\n");
}
Run Code Online (Sandbox Code Playgroud)

description 是来自SQLite DB的字符串


Aus*_*ney 19

正如Falmarri在他的评论中所说,当你的字符串被放入数据库时​​,你的字符串就会被转义.您可以尝试在将字符串String s = unescape(stringFromDatabase)放入之前通过调用来取消字符串TextView.

另请注意,DatabaseUtils.sqlEscapeString()在将数据插入数据库时,请确保使用来自用户的任何类型的数据或未知的可更改源.这将保护您免受错误和SQL注入.