Вы не должны использовать StringBuilder
для sb2.
Короче говоря, вы говорите .NET заменить 6666666601666666661
в sb1
.
Попробуйте:
List<string> list2 = new List<string>();
list2.Append("6666666601")
list2.Append("666666661")
foreach (var str in list2)
{
sb1.Replace(str + "\r\n", ""); // the \r\n are because you used `AppendLine`
}
(а я даже неуверен, что вы хотите использовать StringBuilder
для sb1. StringBuilder
используется для «составления» строк, а не для «их сбора»)
Обратите внимание, что это все равно неправильно, неправильно!
Было бы гораздо лучше начать sb1 с пустой строки, например:
sb1.AppendLine("");
, чтобы вы могли заменить следующим образом:
sb1.Replace("\r\n" + str + "\r\n", "\r\n"); // the \r\n are because you used `AppendLine`
таким образом, 99
не будет 1999
, потому что 1999
будет \r\n1999\r\n
, а 99
будет \r\n99\r\n
(мы добавляем пустую строку в начале StringBuilder
, так что даже первый элемент предшествуетна \r\n
. Мы заменяем на \r\n
, потому что мы сопоставляем TWO \r\n
, один до и один позже, но один из двух должен быть сохранен.)
Я добавлю, что, возможно,вы просто обменяли StringBuilder
на коллекцию string
с, и, возможно, вы хотели сделать это:
List<string> str1 = new List<string>();
str1.Add("555555555");
str1.Add("666666660");
str1.Add("6666666601");
str1.Add("666666661");
List<string> str2 = new List<string>();
str2.Add("6666666601");
str2.Add("666666661");
str1.RemoveAll(p => str2.Contains(p));