我需要一个正则表达式(或另一个不错的解决方案),该正则表达式将匹配表中的标记之间的 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>
答案 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。