【发布时间】:2010-07-29 12:15:21
【问题描述】:
我有一个包含如下数据的数据库字段:
76,60,12
如果我要删除,例如 60,我该怎么办?
要删除的数字可以是任何地方。如果需要,我还需要删除逗号。
我正在使用 .NET 2.0。
【问题讨论】:
-
这些值是否在字符串中?即:
"76,60,12"作为数据库列值?
我有一个包含如下数据的数据库字段:
76,60,12
如果我要删除,例如 60,我该怎么办?
要删除的数字可以是任何地方。如果需要,我还需要删除逗号。
我正在使用 .NET 2.0。
【问题讨论】:
"76,60,12" 作为数据库列值?
我会用逗号分割字符串,删除元素,然后再次加入字符串。希望这一切都适用于 .NET 2.0:
string s = "76,60,12";
List<string> numbers = new List<string>(s.Split(','));
numbers.Remove("60");
s = string.Join(",", numbers.ToArray());
【讨论】:
如果您使用的是 Visual Studio 2008 或 2010,则可以使用 LINQ Bridge 将 LINQ to Objects 功能添加到 .NET 2.0 并执行以下操作:
string csv = String.Join(",",
"76,60,12".Split(',').Where(s => s != "60").ToArray());
【讨论】:
使用正则表达式并且逗号(甚至前导空格)是可选的。您的正则表达式字符串将类似于 "[,]?[\s]?" + "60" (替换成你想要的地方)
作为一个例子,它看起来像这样(我只是输入这个,不确定它是否编译,但应该显示逻辑)
dbFieldValue = Regex.Replace(dbFieldValue, @"(?(^)\b60\b[,\s]*|[,\s]*\b60\b)", "");
--- 已编辑 ---- 上面的正则表达式已被编辑,因此它现在指定边界,并且如果文本显示为第一个元素,它也会满足。
【讨论】:
正则表达式给了我一个想法,在两边添加“,”并替换“,60”。 很可能比其他版本更快,并假设没有空格
Dim values = "76,60,12"
Dim valueToReplace = "60"
values = ("," & values & ",").Replace("," & valueToReplace & ",", ",").Trim(",")
【讨论】: