将输入的 NewLines 转换为 <br /> 标签

Posted

技术标签:

【中文标题】将输入的 NewLines 转换为 <br /> 标签【英文标题】:Convert input's NewLines to <br /> tags 【发布时间】:2014-10-12 19:44:40 【问题描述】:

我已经实现了一个代码,它的工作原理是这样的:-

点击进入它会生成&lt;br /&gt;标签。我希望它应该生成我想要的&lt;br /&gt;,每当用户点击进入时它应该生成&lt;br /&gt;标签,但同时它不应该是可见的。请查找代码供您参考:-

<script type="text/javascript">
   function EnterEventDesc(e) 
       if (e.keyCode == 13) 
           var input = $("#ctl00_ContentPlaceHolder1_txtJobDesc");
           input.val(input.val() + "<br/>");
           return false;
        else 
           return true;
       

   
 </script>  

&lt;br /&gt; 标签即将到来,但我想同时隐藏它。请帮忙

【问题讨论】:

您的输入是文本区域还是文本输入? 看起来您的输入是文本字段或文本区域。您无法在这些控件中隐藏 任何内容。看起来使用现成的 WYSIWUG 编辑器而不是自定义代码可能是值得的。 如果不使用隐藏的输入元素,您将无法做到这一点。为什么不使用&lt;textarea&gt; 元素,然后在服务器端将换行符转换为换行符? 为什么要先插入br 然后隐藏它?根本不要插入它,如果你不想换行的话…… @Jon:你能分享一些与所见即所得有关的东西吗? 【参考方案1】:

您似乎正在使用 ASP.Net,并且您正在尝试将 Input 的 NewLines 转换为 &lt;br /&gt; 标记,以便在其他地方使用,例如保存在数据库中。 如果是真的,你的方法不对,让用户使用 Enter 键在 textarea 中创建新行,完全删除 js 代码,然后在代码隐藏中使用此功能:

C#:

public static string LineBreaksTextToDB(string input)

    return System.Text.RegularExpressions.Regex.Replace(input, "([^\\r])[\\n]", "$1\\r\\n").Replace("\\r\\n", "<br />");

VB.NET:

Public Shared Function LineBreaksTextToDB(ByVal input As String) As String
    Return System.Text.RegularExpressions.Regex.Replace(input, "([^\r])[\n]", "$1\r\n").Replace("\r\n", "<br />")
End Function

然后做这样的事情:

... = LineBreaksTextToDB(txtMyInput.Text)

并且所有的 NewLines 都被转换为&lt;br /&gt; 标签。

更新: 如果你想在一个Input中回调这个保存的数据,那么你需要再次将&lt;br /&gt;转换为NewLine。但是,如果您尝试以 Lable 之类的形式显示数据,则无需执行任何操作,因为 &lt;br /&gt; 标记会自动在 html 中实现。

C#:

public static string LineBreaksDBToText(string input)

    return input.Replace("<br />", System.Environment.NewLine);

VB.NET:

Public Shared Function LineBreaksDBToText(ByVal input As String) As String
    Return input.Replace("<br />", vbCrLf)
End Function

然后做这样的事情:

txtMyInput.Text = LineBreaksDBToText(myDatabaseTable.myField)

并且所有&lt;br /&gt; 标签都被转换为NewLines。

注意:我不确定 C#,它只是使用 This Convertor 转换的 VB 代码。

【讨论】:

你能帮我用 C# 做吗 @Shrutika:检查更新的答案,让我知道结果。 ... = LineBreaksTextToDB(txtMyInput.Text) here ... 意味着需要做什么? @Shrutika:假设您想在数据库中保存txtMyInput.Text,如果您正常执行此操作,您会错过数据库中的新行,但如果您使用LineBreaksTextToDB(txtMyInput.Text),则所有新行都将转换为&lt;br /&gt;,并且保存在数据库中。 是的,我想将该描述保存在数据库中。从那里我必须在前端的中继器中展示这一点。我能够获得 标签。但无法使该标签不可见【参考方案2】:

如果要换行,可以插入"\n"而不是&lt;br&gt;

【讨论】:

我的问题是使 标签从 textarea 中不可见。如何做到这一点? “使它们不可见”是什么意思?您希望它们在源代码中但不显示?你的最终目的是什么? 当我点击进入一个 标签进入文本区域时,我想隐藏那个标签 删除所有的 javascript 代码,这将隐藏 标签。【参考方案3】:

如果您使用textarea,则为纯文本,不需要&lt;br&gt;

在后端将纯文本换行符\n 转换为&lt;br&gt;

或者,当使用 HTML 替换文本区域(所见即所得的编辑器)时,您可以通过 CSS 设置换行行为。

#myEditorBox 
    white-space: pre;

【讨论】:

以上是关于将输入的 NewLines 转换为 <br /> 标签的主要内容,如果未能解决你的问题,请参考以下文章

.innerhtml 将 <br/> 标签转换为 <br>

div 纯文本中的新行,br

将 JSON \n 转换为 HTML <br> 标签

将 <br> 解析为纯文本新段落

org.json.JSONException:java.lang.String 类型的值 <br 无法转换为 JSONObject

将换行符转换为 <li> 标签