需要获取多行字符串以在文本框Java中显示

时间:2011-01-30 23:49:17

标签: java multiline

我的项目有要求。 我在javascript中生成一个注释字符串。

Coping Option: Delete all codes and replace
Source Proj Num: R21AR058864-02
Source PI Last Name: SZALAI
Appl ID: 7924675; File Year: 7924675

我将它发送到服务器,我将其作为字符串存储在db中,然后我将其检索回来并在textarea中显示它。

我在javascript中生成它:

        codingHistoryComment += 'Source Proj Num: <%=mDefault.getFullProjectNumber()%>'+'\n';
  codingHistoryComment += 'Source PI Last Name: <%=mDefault.getPILastName()%>'+'\n';
  codingHistoryComment += 'Appl ID: <%=mDefault.getApplId()%>; File Year: <%=mDefault.getApplId()%>'+'\n';

在java中我试图将\ n替换为<:

    String str = soChild2.getChild("codingHistoryComment").getValue().trim();
 if(str.contains("\\n")){
  str = str.replaceAll("(\r\n|\n)", "<br>");
 }

然而,textarea仍然填充了“\ n”字符:

Coping Option: Delete all codes and replace\nSource Proj Num: R21AR058864-02\nSource PI Last Name: SZALAI\nAppl ID: 7924675; File Year: 7924675\n

感谢。

5 个答案:

答案 0 :(得分:1)

  

在java中我试图将\ n替换为

请勿替换“\ n”。 JTextArea会将其解析为新的行字符串。

尝试将其转换为“br”标记也无济于事,因为JTextArea不支持html。

我总是只使用以下代码用文本填充文本区域:

JTextArea textArea = new JTextArea(5, 20);
textArea.setText("1\n2\n3\n4\n5\n6\n7\n8\n9\n0");

答案 1 :(得分:1)

// automatically wrap lines
jTextArea.setLineWrap( true );
// break lines on word, rather than character boundaries.
jTextArea.setWrapStyleWord( true );

来自here

答案 2 :(得分:1)

这是一个有效的测试,试试看:

String str = "This is a test\r\n test.";
if(str.contains("\r\n")) {
    System.out.println(str);
}

答案 3 :(得分:0)

假设Javascript(因为您尝试使用HTML中断行替换):

HTML textarea换行符应该是换行符\n,而不是HTML换行符<br>。尝试使用下面的代码删除额外的斜杠,而不是当前的if语句和替换。不要忘记在替换后将值分配给textarea。

尝试:

str = str.replaceAll("\\n", "\n");

答案 4 :(得分:0)

我认为你的问题在这里:

if(str.contains("\\n")){

而不是"\\n",您只需要"\n"

然后代替"\n",您需要"\\n"

str = str.replaceAll("(\r\n|\n)", "<br>");

顺便说一下,if(str.contains()并不是真的需要,因为如果没有"\n"个字符,那么运行替换all不会有什么坏处。