2010-07-29 2 views
2

У меня есть поле базы данных с данными, такие как это:Удалить элемент из массива строк

76,60,12 

Если я хочу, чтобы удалить, например, 60, то, что я должен делать?

Число, которое нужно удалить, может быть в любом месте. Мне также необходимо удалить запятую, если это необходимо.

Я использую .NET 2.0.

+0

Значения находятся в строке? т. е .: '" 76,60,12 "' в качестве значения столбца базы данных? –

ответ

8

Я бы разделил строку на запятую, удалил элемент и снова присоединил строку. Надеюсь, все это работает в .NET 2.0:

string s = "76,60,12"; 
List<string> numbers = new List<string>(s.Split(',')); 
numbers.Remove("60"); 
s = string.Join(",", numbers.ToArray()); 
+0

Это работает, спасибо! – netNewbi3

-1

Используйте регулярное выражение и используйте запятую (и даже ведущие пробелы). Ваша строка регулярных выражений будет выглядеть как «[,]? [\ S]?» + «60» (замените на место, куда вы хотите)

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

dbFieldValue = Regex.Replace(dbFieldValue, @"(?(^)\b60\b[,\s]*|[,\s]*\b60\b)", ""); 

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

+1

Это похоже на опасное регулярное выражение, которое нужно запустить ... что бы вы получили, если бы вы использовали это в строке «600,160,60,6060». Я не думаю, что вы получите то, что вы хотели от него ... – Chris

+0

Спасибо, комментарий. Пропустите это, чтобы спешить. Добавление границы к ней будет эффективно исправлять ее. dbFieldValue = Regex.Replace (dbFieldValue, "[,]? [\ S]?" + "\ B60 \ b", ""); –

+0

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

0

Если вы используете Visual Studio 2008 или 2010, вы можете использовать LINQ Bridge добавить LINQ функциональности Objects для .NET 2.0 и выполните следующие действия:

string csv = String.Join(",", 
    "76,60,12".Split(',').Where(s => s != "60").ToArray()); 
-1

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

Dim values = "76,60,12" 
Dim valueToReplace = "60" 
values = ("," & values & ",").Replace("," & valueToReplace & ",", ",").Trim(",") 
Смежные вопросы