【问题标题】:Remove \n using regular expression in javascript在 javascript 中使用正则表达式删除 \n
【发布时间】:2011-06-07 16:38:57
【问题描述】:

我有一个 javascript 字符串包含这样的 html 表:

  <div class="nobrtable"><table class="at"><TBODY><TR><td> FY

  </TD><td> Profit Margin

  </TD><td> Asset Turnover

   </TD><td> RoA

   </TD><td> Leverage Ratio

   </TD><td> RoE

   </TD><td> Cash Conversion

   </TD><td> Cash RoE

   </TD><td> RoC

    </TD></TR><TR><td> 2002

     </TD><td> 5.1%

    </TD><td> 1.42

     </TD><td> 7.2%

      </TD><td> 127%

      </TD><td> 9.2%

      </TD><td> 163%

      </TD><td> 14.9%

      </TD><td> 16.9%

      </TD></TR>

      </TD></TR></TBODY></table></div> 

如何使用正则表达式删除表中的所有 '\n'?否则太长了。

我尝试过使用

ele = ele.replace(/\n/g, ' ');

它将替换我字符串中的所有 '\n'。 我只想删除所有 html 表中的所有 '\n'。

谢谢!

【问题讨论】:

  • too long 是什么意思?
  • 如果您能解释一下字符串长度究竟是一个问题,以及为什么删除 \n(而不是 \r\t 或空格)会解决它,那将非常有帮助。
  • 想象一下您将通过删除不必要的空白来节省的所有带宽!!!

标签: javascript regex


【解决方案1】:

试试这个:

ele = ele.replace(/\s+<\/TD>/g,' </TD>')
正则表达式中的

/m 表示匹配多行,这有助于匹配字符串中的多个 \n。

更新

  • 删除了 /m 修饰符
  • 将 \s* 更改为 \s+
  • 在替换字符串中引入了一个空白字符,因为浏览器会在 TD 中的文本之后呈现一个空白字符,这是您可能想要的(尽管最好不要使用空格并使用 CSS 填充/边距

【讨论】:

  • 最后,我使用 ele = ele.replace(/\s*/gim,''); /i 不区分大小写。
  • 我在 IE 7,8,FF,Chrome 和 Safari 下测试。没关系。但是在IE 9下,好像没有效果。有什么建议吗?
  • 嗯...您的 IE9 是否也受此代码影响? icodesnip.com/snippet/javascript/ie9-regex-bug
  • +1,但我会使用\s+ 而不是\s*;如果标签前没有空格,则无需执行任何操作。 \s+ 仅在至少有一个空白字符时才匹配。
  • 另外,您对/m 修饰符的描述不正确。它所做的只是改变^$ 锚点的行为,而您并没有使用它们。 \n 是一个空格字符,所以无论匹配模式如何,\s 都会一直匹配它。
【解决方案2】:

试试这个:

ele = ele.replace(/\n<\/TD>/g, '</TD>');

【讨论】:

    【解决方案3】:

    我不确定您是在谈论 HTML 源代码还是运行时的内部 HTML,但您可以尝试如下修剪每个 TD 元素的内部 HTML:

    var tds=document.getElementsByTagName('td'), i;
    for (i=0; i<tds.length; i++) {
      tds[i].innerHTML = tds[i].innerHTML.trim();
    }
    

    【讨论】:

      【解决方案4】:

      假设您在名为 html 的变量中有原始文本,以下内容应该适合您:

      var m = html.match(/<table[\s\S]*<\/table>/i);
      var tableWithoutNewLine = m[0].replace(/\n/g, '');
      html = html.replace(/<table[\s\S]*<\/table>/i, tableWithoutNewLine);
      

      在此代码变量之后,html 将在 &lt;table&lt;/table 标记之间替换所有新行 \n,同时保留所有其他新行和空格。

      【讨论】:

      • 感谢 anubhava,你无处不在。
      猜你喜欢
      • 2019-02-16
      • 2011-12-23
      • 2011-08-04
      • 2011-11-01
      • 2010-12-02
      • 1970-01-01
      • 2010-10-31
      相关资源
      最近更新 更多