【问题标题】:Remove item from string array从字符串数组中删除项目
【发布时间】:2010-07-29 12:15:21
【问题描述】:

我有一个包含如下数据的数据库字段:

76,60,12

如果我要删除,例如 60,我该怎么办?

要删除的数字可以是任何地方。如果需要,我还需要删除逗号。

我正在使用 .NET 2.0。

【问题讨论】:

  • 这些值是否在字符串中?即:"76,60,12" 作为数据库列值?

标签: .net arrays list


【解决方案1】:

我会用逗号分割字符串,删除元素,然后再次加入字符串。希望这一切都适用于 .NET 2.0:

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

【讨论】:

    【解决方案2】:

    如果您使用的是 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());
    

    【讨论】:

      【解决方案3】:

      使用正则表达式并且逗号(甚至前导空格)是可选的。您的正则表达式字符串将类似于 "[,]?[\s]?" + "60" (替换成你想要的地方)

      作为一个例子,它看起来像这样(我只是输入这个,不确定它是否编译,但应该显示逻辑)

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

      --- 已编辑 ---- 上面的正则表达式已被编辑,因此它现在指定边界,并且如果文本显示为第一个元素,它也会满足。

      【讨论】:

      • 这看起来像是一个危险的正则表达式正在运行......如果你在字符串“600,160,60,6060”上运行它会得到什么。我不认为你会得到你想要的东西......
      • 感谢评论。很快就完全错过了。为其添加边界实际上会很好地修复它。 dbFieldValue = Regex.Replace(dbFieldValue, "[,]?[\s]?" + "\b60\b", "");
      • 您可能需要更多... .并且不要忘记您可以编辑您的答案以使其更正确,并希望减号者(我不是其中之一)将撤销他们的拒绝(我相信在编辑答案之前他们不能)。
      【解决方案4】:

      正则表达式给了我一个想法,在两边添加“,”并替换“,60”。 很可能比其他版本更快,并假设没有空格

      Dim values = "76,60,12"
      Dim valueToReplace = "60"
      values = ("," & values & ",").Replace("," & valueToReplace & ",", ",").Trim(",")
      

      【讨论】:

        猜你喜欢
        • 2021-12-28
        • 2017-02-10
        • 2016-09-06
        • 1970-01-01
        • 2015-09-27
        • 1970-01-01
        • 1970-01-01
        • 2021-03-31
        • 1970-01-01
        相关资源
        最近更新 更多