【问题标题】:Need to get a multiline string to display in a textbox Java需要在文本框中显示多行字符串 Java
【发布时间】:2011-06-18 07:12:50
【问题描述】:

我的项目中有一个需求。 我在 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>");
 }

但是文本区域仍然会填充“\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

谢谢。

【问题讨论】:

  • @Vindhya "文本区域 .."。那究竟是什么? java.awt.TextArea? javax.swing.JTextArea?完全不同的东西?请注意,如果您发布的是 SSCCE (pscode.org/sscce.html) 而不是代码 sn-ps,则这些问题将是不必要的。但总的来说,编程是一项精确的业务。请在您的在线讨论和调试中保持这种精确度。
  • 您是用 Java 还是 Javascript 编写代码?标签和标题说 Java,但您在问题中多次提到 Javascript。
  • 我正在用 java 编写代码,但我的客户端在 jsp 中涉及 javascript。因此,我给出了代码 sn-p 以获得更好的想法。
  • 没有。我没有使用 JTextArea。它的 html 文本区域。我必须显示一个包含多行字符串的 textarea 页面。

标签: java multiline


【解决方案1】:

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

HTML textarea 换行符应该是换行符 \n 而不是 HTML 换行符 &lt;br&gt;。尝试使用下面的代码删除多余的斜杠,而不是当前的 if 语句并替换。替换后别忘了给textarea赋值。

试试:

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

【讨论】:

    【解决方案2】:

    在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");
    

    【讨论】:

      【解决方案3】:
      // automatically wrap lines
      jTextArea.setLineWrap( true );
      // break lines on word, rather than character boundaries.
      jTextArea.setWrapStyleWord( true );
      

      来自here

      【讨论】:

        【解决方案4】:

        我认为你的问题在这里:

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

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

        那么你需要"\\n"而不是"\n"

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

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

        【讨论】:

        • 我认为我们需要有 \\n 因为 \n 会避开斜线对吗?仍然它不起作用。 \n 仍然存在于字符串中。 :(
        • @Vidhya,我刚刚测试过,这个方法效果很好。你能提供一个没有的SSCCE吗?
        • 这是一个有效的测试,试试看: String str = "This is a test\n test."; if(str.contains("\n")){ System.out.println(str); str = str.replaceAll("(\\r\\n|\\n)", "
          "); System.out.println(str); }
        【解决方案5】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多