【问题标题】:Insert multiple line breaks into a JavaScript string (regex) (CodeMirror)在 JavaScript 字符串中插入多个换行符(正则表达式)(CodeMirror)
【发布时间】:2012-06-04 16:10:19
【问题描述】:

我有几个字符串,我想在某些点插入一些换行符。

我想出了一些后勤问题,但总的来说我似乎无法解决这个问题,可能是因为我对正则表达式的经验有限。

基本上,我有一长串的 XML 标记,它们都在一行上。我想在某些点添加换行符,以使数据更加格式化并看起来不错。我正在使用CodeMirror 在网页上显示此数据,但由于某种原因,它全部位于第 1 行。

所以我需要从这样的事情出发:

<Sample><Name></Name><PhoneNumber><AreaCode></AreaCode><Number></Number></PhoneNumber></Sample>

这样的:

<Sample>
  <Name></Name>
  <PhoneNumber>
    <AreaCode></AreaCode>
    <Number></Number>
  </PhoneNumber>
</Sample>

CodeMirror 将处理其余的格式设置,我需要做的就是使用正则表达式或某种循环在正确的位置插入换行符。标签将会或可以改变,所以我猜必须使用正则表达式。

我已经成功地使用 \n 和 插入换行符,但似乎无法让正则表达式检测到正确的位置。

任何帮助将不胜感激。谢谢。

更新 我忽略了这一点,但括号实际上是作为

发送的

所以示例标签看起来像:

&lt;PhoneNumber&gt;

&lt;/PhoneNumber&gt;

所以基本上需要在每个&amp;gt; 之后插入一个\n,这是一个结束标签或包含子标签的开始标签。

【问题讨论】:

    标签: javascript regex string formatting line-breaks


    【解决方案1】:

    这里有龙。

    我想向您指出一个 very similar question answered awhile ago,它很好地解释了为什么除非您真的知道自己在做什么,否则不应尝试自己解析 XML。

    如果您想获得漂亮的换行符之类的东西,请使用 XML 反序列化器。

    【讨论】:

    • 我之前确实读过那篇文章并且它是正确的,但是对于像我的示例这样的简单 XML/HTML 应该是可能的。不过感谢您的提醒。
    • 我的意思是,你会得到意想不到的结果,除非在非常有限的情况下,比如你所展示的。如果是为了锻炼,没问题。如果它注定要用于生产代码库,请重新考虑您的策略。
    【解决方案2】:

    试试这个regex 模式:

      >\s*<(?!/)
    

    替换字符串:&gt;\n&lt;

    更新:

    &gt;\s*&lt;(?!/)
    

    【讨论】:

    • 有关更多信息,请参阅上面的更新。显然代码以&amp;lt;&amp;gt; 而不是括号返回。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 2018-10-24
    相关资源
    最近更新 更多