2016-06-21 6 views
1

У меня есть List<String> Включает в себя девять предметов.Как удалить один элемент в списке C#?

Хочу удалить у предметов есть: &nbsp;.

Я делаю это с кодом:

foreach (string text in listHeader[0]) 
{ 
    if (text.Contains("&nbsp")) 
    { 
     listHeader[0] = listHeader[0].SelectMany(line => 
             { 
              line.Replace("&nbsp;", ""); 
              return new String[] { line }; 
             }).ToList(); 
    } 
} 

Но listHeader[0] также девять пунктов. Как исправить мой код для удаления элемента содержит &nbsp;.

Образец данных:

listHeader[0]= { 
        text 
        sample 
        new string 
        &nbsp; 
       } 

Другой случай мой listHeader[1] нужен фильтр с начала с <!--<div до </div>-->.

foreach (string text in listHeader[1]) 
{ 
    listHeader[1] = Regex.Replace(text, "<!--<div.*?</div>-->", "").ToList(); 
} 

Мой вопрос:

Как удалить элемент содержит строку начать с <!--<div и заканчивается в </div>-->

Образец:

listHeader[1] = { 
go to school 

<!--<div id='fav_0118668891'class='icon displayOn' ><span class='favorite' onclick='javascript:addMatchFavorites("0118668891","014018",false,false);' title='undefined'></span></div>--> 

work at the company 

take a coffee 
} 

Моя постановляю:

В этом case:

Я использую StartWith и EndWith, чтобы найти эту строку и Remove.

listHeader[1].RemoveAll(x => x.StartsWith("<!--<div") && x.EndsWith("</div>-->")); 
+0

образец введите, пожалуйста –

+1

Ваш код в значительной степени нечитаемым :) Я до сих пор не понимаю, что структура ваши массивы. Вы сказали «Список ', но он действительно выглядит как список списков. Не могли бы вы показать весь код? –

+1

Кстати, здесь 'line.Replace ("   "," ");' возвращаемое значение просто игнорируется. 'Replace' не изменяет исходную строку, он возвращает новое изменение. –

ответ

3
foreach (var item in listHeader[0]) 
{ 
    if (item.Contains("&nbsp")) 
     nineItems.Remove(item); // remove item(s) containing &nbsp 
} 

ИЛИ более простой способ:

listHeader[0].RemoveAll(x => x.Contains("&nbsp")); 
+0

My 'listHeader [0]' содержит начало с ' ->'. Метод «Содержит» отображается с. – vanloc

+0

Вы потрясающий. Посмотрите, и разрешите мой вопрос. – vanloc

+0

@ VănLộc Рад, что я мог бы помочь! – fuzz

3

Как исправить мой код, чтобы удалить элемент содержит &nbsp;

Вы можете использовать List.RemoveAll метод, который удаляет все элементы, которые соответствуют условиям, определенным указанному предикат.

listHeader[0].RemoveAll(x=> x.Contains("&nbsp")); 

Проверить это Demo

+0

Спасибо, @hari prasad. – vanloc

Смежные вопросы