删除表格标签之间的空格

时间:2018-12-31 13:48:26

标签: javascript regex

我需要一个正则表达式(或另一个不错的解决方案),该正则表达式将匹配中的标记之间的 only 仅空白。我当前的正则表达式将匹配所有标签之间的空格。

const result = `
<div>
  <table class="foo">
    <tr>
      <td>
        Lorem ipsum
      </td>
    </tr>
    <tr>
      <td>
        Dolor
      </td>
    </tr>
  </table>
</div>
`.replace(/>\s+</g, '><');

我想实现这一目标:

<div>
  <table class="foo"><tr><td>Lorem ipsum</td></tr><tr><td>Dolor</td></tr></table>
</div>

2 个答案:

答案 0 :(得分:1)

说明

这不是一个正则表达式解决方案,但是我认为它实际上是一个更为简单的解决方案,请随时提供反馈。

使用此解决方案,考虑到您要专门针对表标签,我认为这足够了吗?

let words = ['Lorum ipsum', 'Dolor'];
let result = `
<div>
  <table class="foo" id="demo" style="">
    <tr>
      <td>
        words[0]
      </td>
    </tr>
    <tr>
      <td>
        words[1]
      </td>
    </tr>
  </table>
</div>
`;

let newResult = '';

const cleanseString = str => {
  const attributes = ['id', 'class', 'style']; // etc ...
  str = str.replace(/\s/g, '');
  const index = str.replace(/\D/g, '');
  const marker = `words[${index}]`;

  if (str.indexOf(marker) >= 0) {
    str = str.replace(marker, words[index]);
  }

  attributes.forEach(attr => {
    if (str.indexOf(attr) >= 0) {
      let start = '',
        end = '';
      start = str.substring(0, str.indexOf(attr));
      end = str.substring(str.indexOf(attr), str.length);
      str = start + " " + end;
    }
  });

  return str;
};

result.split("<").forEach(str => {
  str = cleanseString(str);

  if (str != '') {
    if (str.indexOf("/table") >= 0) newResult += "<" + str + '\n';
    else if (str.indexOf('table') >= 0) newResult += '\n\t' + "<" + str;
    else newResult += "<" + str;
  }
});

//console.clear();
console.log(newResult);

答案 1 :(得分:0)

我看到您希望它修复public static List<Test> GetTests(string testVariable) { DataTable result = new DataTable(); using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ConnectionString)) { connection.Open(); GetQuery( connection, QueryGetTests, ref result, new List<SqlParameter>() { new SqlParameter("@testVariable", testVariable) } ); return result.Rows.OfType<DataRow>().Select(DataRowToTest).ToList(); } } private static void GetQuery(SqlConnection connection, string query, ref DataTable dataTable, List<SqlParameter> parameters = null) { dataTable = new DataTable(); using (SqlCommand command = new SqlCommand(query, connection)) { command.CommandTimeout = 120; if (parameters != null) { foreach (SqlParameter parameter in parameters) { command.Parameters.Add(parameter); } } using (SqlDataAdapter reader = new SqlDataAdapter(command)) { reader.Fill(dataTable); } } } 软件包中的Whitespace text nodes cannot appear as a child of <table>这个错误。

我遇到了相同的错误-我正在使用以下命令对其进行修复(在此示例中,html-to-react位于包含HTML的字符串名称中)

sliced

(使用正则表达式)假定它是正则HTML,而不是“任意” HTML。