在新行上拆分一个字符串,并根据行号格式化每一行不同的行

时间:2014-07-15 11:43:47

标签: asp.net regex asp.net-mvc-4

我想在新行上拆分一个字符串,并根据行号和该行的开头格式化不同的每一行。

我找到了一个可以很好地完成任务的例子(stackoverflow):

@Html.Raw(Html.Encode(Model[i].Services[j].ServiceDescription).Replace("\n", "<br />"))

但这还需要一些补充:

  • 第一行:大字幕,形成它。(<h1> text from that model </h1>
  • 第二行:中间标题,形成它。(<h4> text from that model </h4>
  • 第三行:普通文本,没有格式化
  • 大于第三行:如果“Model [i] .Services [j] .ServiceDescription”包含“ - ”而不是每个新“ - ”的打印<ul><li>Model[i].Services[j].ServiceDescription</li><ul>,请将其添加到它: <ul> <li>Model[i].Services[j].ServiceDescription first "-"text </li><li>Model[i].Services[j].ServiceDescription second "-"text </li> <ul>

我想我可以这样:

<h1>@Html.Raw(Html.Encode(Model[i].Services[j].ServiceDescription).Replace("\n", "<br />"))</h1> 

但是这会使用<h1>标题格式化整个文本,所以我需要一个for - 循环和if来迭代字符串,可能是这样的:

no JavaScript, but c# ( I put this into fiddler,because I couldn't format it here)

示例输入如下:

  

“第一行\ r \ n第二行\ r \ n第三行\ r \ n-第一个Li_Element \ r \ n-第二个Li_Element \ r \ n正常文本。”

顺便说一句,我找到了类似split up a string on new lines的内容。

我怎么能意识到这一点,我不知道如何将所有单个部分组合成一个正常工作的代码?

更新 我做了类似的事情:

@BWHtml.ToParagraphs(Model[i].Services[j].ServiceDescription)

我做了类似的事情:

click

UPDATE(终):  final

您是否认为此代码中存在安全问题或提高性能的任何建议?

1 个答案:

答案 0 :(得分:1)

似乎自定义HTML帮助程序适合您,创建方法CustomHtmlHelper.FormatParagraphs,按行拆分给定字符串,根据需要进行修改并返回MvcHtmlString

有关Creating Custom HTML Helpers

的其他信息