2015-07-08 3 views
0

Я хотел бы найти самый простой способ обрезать пустые Удаление пустых тегов абзаца

теги перед началом любого текста. например, у меня есть текст ниже.

<p> </p><p> </p> 
<p> </p><p>  </p> 
<p> </p> 
<p>This is an example<br></p><p> </p><p>continue </p> 

Я хотел бы выход быть <p>This is an example<br></p><p> </p><p>continue </p>

Я хочу, чтобы все пустые теги P должны быть удалены. Между

тегов может быть более одного.

У меня есть варианты использования CSS или VB или C#.

+3

И почему это помечено C# тогда? – Marco

+0

У меня нет проблем с преобразованием C# в VB. Если у вас есть решение с помощью C#, я бы преобразовал его в vb.отредактировал вопрос – Rad

+0

Я дал вам ответ с C# и попытался перевести его на Vb самостоятельно. – Marco

ответ

0

Я думаю, что этот CSS трюк будет работать:

p:empty { 
    display: none; 
} 
+0

Разве это не пустое пространство? – Mox

+0

нет, он будет считаться пустым. пустой селектор соответствует каждому элементу, у которого нет дочерних элементов (включая текстовые узлы). – Dima

+0

Я хочу удалить пустые узлы, которые существуют только до начала ввода текста. Не весь пустой абзац – Rad

0

Вы отметили свой вопрос в CSS. Итак, я обеспечиваю вам ответ в CSS с помощью :empty pseudo class selector:

p:empty{ 
    display: none; 
} 

См can I use :empty


В соответствии с обновленной вопрос:

вы можете использовать not, как показано ниже:

p:empty :not(p + p:empty){ 
    display: none; 
} 
+0

Это скрывает все теги P. Я хотел бы удалить тот, который предшествует любому тексту. Я изменил пример. – Rad

+0

Это не сработает, если para имеет css, как hieght – Imad

+0

проверьте наличие обновленного ответа. –

0

Вы можете посмотреть следующий сайт для решение, я думаю, что это поможет вам: http://www.dotnetperls.com/remove-html-tags

+0

Вы не поняли моих вопросов. Я не хочу обрезать все теги P. только те, которые предшествуют любому тексту. – Rad

1

Оставить комментарий, что вы также принять C# Я предложил бы использовать простое регулярное выражение для проверки этого:

var source = @"<p> </p><p> </p> 
<p> </p><p>  </p> 
<p> </p> 
<p>This is an example<br></p><p> </p><p>continue </p>"; 

string output = Regex.Replace(source, @"<p>\s*</p>", "").Trim(); 

Тот же самый код в VB. чистая конвертируются с Telerik должен выглядеть следующим образом:

Dim source = "<p> </p><p> </p>" & vbCr & vbLf & "<p> </p><p>  </p>" & vbCr & vbLf & "<p> </p>" & vbCr & vbLf & "<p>This is an example<br></p><p> </p><p>continue </p>" 

Dim output As String = Regex.Replace(source, "<p>\s*</p>", "").Trim() 

Объяснение:

<p> matches the characters <p> literally 
\s* match any white space character [\r\n\t\f ] 0 to unlimited times 
</p> matches the characters </p> literally 
0

с помощью JQuery, НЕ C#, VB.NET или CSS

запись этого документа на готовое событие

var p = $("p"); 

    for (var i = 0; i < p.length; i++) 
    { 
     if($.trim(p[i].innerHTML) == "") 
     { 
      p[i].remove(); 
     } 
    } 
  1. Найти все р тег
  2. итерацию над ними, чтобы найти пустые теги
  3. удалить из них

JSFiddle

-1

Пожалуйста, попробуйте этот

function removeEmptyPTags() {    
       var items = $('body').find('p'); 
       $.each(items, function (i, v) { 
        if ($(items[i]).html().trim() === "") { 
         $(items[i]).remove(); 
        } 
       }); 
      } 
Смежные вопросы