C# - Удалить пробелы в источнике HTML промежуточные разметки?

Я перешел к представлению поблочного тестирования в FoxForward 2007 и не был сказан никогда модульному тесту ничего, что работает с данными. В конце концов, если Вы тестируете на живых данных, результаты непредсказуемы, и если Вы не тестируете на живых данных, Вы на самом деле не тестируете код, который Вы записали. К сожалению, это - большая часть кодирования, которое я делаю в эти дни.:-)

я действительно взял выстрел в TDD недавно, когда я писал стандартную программу, чтобы сохранить и восстановить настройки. Во-первых, я проверил, что мог создать объект хранения. Затем то, что это имело метод, который я должен был назвать. Затем то, что я мог назвать его. Затем то, что я мог передать его параметры. Затем то, что я мог передать его определенные параметры. И так далее, пока я наконец не проверял, что это сохранит указанную настройку, позволит мне изменять его, и затем восстанавливать его, для нескольких различных синтаксисов.

я не добирался до конца, потому что я needed-the-routine-now-dammit, но это было хорошее осуществление.

5
задан Mogsdad 25 August 2015 в 03:48
поделиться

5 ответов

решение в ссылке, которую Расик отправил сюда , это решение и для вас

Regex.Replace(html, @"\s*(<[^>]+>)\s*", "$1", RegexOptions.Singleline);

Обычный берите разметку как есть и символы пробела и меняйте ее с разметкой.

Редактировать: Лучшее решение, которое работает для примера Micheal

Regex.Replace(txtSource.Text,
            @"\s*(?<capture><(?<markUp>\w+)>.*<\/\k<markUp>>)\s*", "${capture}", RegexOptions.Singleline);

: это регулярное выражение обнаружит теги разметки и не изменит их содержимое, а также удалит пробелы снаружи. Есть и другие случаи, на которые стоит обратить внимание. Как разметка без конечных тегов.

9
ответ дан 18 December 2019 в 10:46
поделиться

С технической точки зрения все пробелы являются частью некоторого элемента HTML. Самый верхний элемент, то есть документ, «владеет» пространствами между отдельными узлами

в вашем примере, например.

Итак, я думаю, вы спрашиваете, можете ли вы удалить пространство между узлами на одном уровне . В этом случае вам нужно будет отслеживать уровень вложенности элемента и предыдущий элемент. Например, последовательность элементов , которые встречаются внутри одного и того же элемента , в котором вы можете определить конец одного и начало следующего элемента и игнорировать все пробелы между ними.

1
ответ дан 18 December 2019 в 10:46
поделиться

Вы можете попытаться использовать регулярное выражение для удаления пробелов. Однако выражение должно быть довольно сложным, чтобы различать открывающие и закрывающие теги и обрабатывать вложенные теги.

Вместо этого вы можете проанализировать ввод HTML с помощью библиотеки, такой как Html Agility Pack , а затем перестроить строку HTML из модели документа. Это не только удалит лишние пробелы, но и проверит HTML (даже автоматически исправит типичные ошибки).

1
ответ дан 18 December 2019 в 10:46
поделиться

У меня возникло бы искушение использовать регулярное выражение для сопоставления любого пробела между конечным тегом и следующим начальным тегом. Сопоставление с образцом регулярных выражений избавит вас от необходимости писать логику самостоятельно.

0
ответ дан 18 December 2019 в 10:46
поделиться

Я не уверен, какой язык программирования вы используете. Но вы можете сделать следующее в C # , используя Regular Expression .

public static string TrimSpaces(string str)
{
return System.Text.RegularExpressions.Regex.Replace(str, @"^\s+", string.Empty);
}

Кроме того, это может помочь изучить другой поток stackoverflow.

Использование регулярного выражения для обрезки html

-1
ответ дан 18 December 2019 в 10:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: