StringBuilder 计算逗号并查找位置

StringBuilder count comma and find position

我正在尝试映射两个 StringBuilder:

string builder1 ="abc1,abc2,abc3,abc4,abc2"
string builder2="100,30,15,102,30"

两个 StringBuilder 计数将相同并且已经映射。但我正在搜索一个特定的数字 30 和名称 abc2

find(30,abc2) 并删除它

所以我需要跟踪逗号或者任何人都可以建议我最好的做法是删除我不想要的字符串在适当的位置。

如果不使用 Regex,将字符串转换为列表、删除项目,然后重新创建列表可能更容易:

StringBuilder sb1 = new StringBuilder("abc1,abc2,abc3,abc4,abc2");
string find1 = "abc2";
var newList = sb1.ToString().Split(',').ToList();
newList.RemoveAll(x => x == find1);
string result = string.Join(",", newList.ToArray());

对于 VB.Net 版本:

Dim sb1 As New StringBuilder("abc1,abc2,abc3,abc4,abc2")
Dim find1 As String = "abc2"
Dim newList As New List(Of String)(sb1.ToString().Split(","c).ToList)
newList.RemoveAll(Function(x) x = find1)
Dim result As String = String.Join(",", newList.ToArray())

所以我看到了 4 个案例:

  • 等于"abc2"(似乎不太可能)
  • 包含 ",abc2,"
  • 开头为 "abc2,"
  • ",abc2" 结尾

Sub removeCSVvalue(sb As StringBuilder, value$)
    If sb.Length <= value.Length Then sb.Replace(value, vbNullString) : Return ' If sb = value
    sb.Replace("," & value & ",", ",")   ' Example: replace ",abc2," with ","
    Dim C = value.Length
    If sb.Length > C Then If sb(C) = "," Then If sb.ToString(0, C) = value Then sb.Remove(0, C + 1) ' If sb.StartsWith(value & ",")
    Dim L = sb.Length - C
    If sb.Length > C Then If sb(L - 1) = "," Then If sb.ToString(L, C) = value Then sb.Length = L - 1 ' If sb.EndsWith("," & value)
End Sub

P.S。这让我想起了我的第一个被否决的答案 Remove item from string array :]