0
text = Daily 10 am - 5 pm.\\nClosed Thanksgiving and Christmas.

private String activateNewlines( String text ) {
        String temp = text;
        if ( text.contains( "\\n") ) {
            while ( temp.contains( "\\n" ) ) {
                int index = temp.indexOf( "\\n" );
                temp = temp.substring( 0, index ) + temp.substring( index + 1 );
            }
            return temp;
        }

        return text;
    }

我试图摆脱特殊字符的额外斜杠,但由于某种原因,子字符串最终删除了正斜杠。子字符串不喜欢字符串开头的斜线吗?最后的字符串最终变成

Daily 10 am - 5 pm.nClosed Thanksgiving and Christmas.

我需要的是

Daily 10 am - 5 pm.\nClosed Thanksgiving and Christmas.

编辑:什么最终为我工作:

    String temp = text;
    if ( text.contains( "\\n") ) {
        temp = temp.replaceAll( "\\\\n", "\\\n" );
        int x = 5;
        return temp;
    }

    return text;

这实际上允许 TextView 识别换行符。

4

2 回答 2

0

我有点困惑,但这里是。所以,"\n"是一条新线。"\\n"是一个反斜杠和一个 n, \n。您可以使用 replaceAll 来摆脱它:string.replaceAll("\n", "")。这是我感到困惑的地方,我不确定你到底想要什么。如果您想保留新行,那么您必须从您获取它的任何地方正确获取它(例如,您应该获取一个\n字符而不是转义版本。)。

于 2012-08-29T02:01:36.737 回答
0

我认为你应该简单地这样做,

string.replaceAll("\\n", "\n")

详细代码,

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    String text = "Daily 10 am - 5 pm.\\nClosed Thanksgiving and Christmas.";
    Log.d("TEMP", "*********************************" + activateNewlines(text));

}

private String activateNewlines( String text ) {
    String temp = text;

    return temp.replaceAll("\\n", "\n");
}

Logcat 输出是,

  08-28 19:16:00.944: D/TEMP(9739): *********************************Daily 10 am - 5 pm.\nClosed Thanksgiving and Christmas.
于 2012-08-29T02:12:27.400 回答