Abrar Kazi Ответов: 4

Как удалить конкретное значение, разделенное запятыми, из строки ?


string Batches=",, H104001002, H104001003,H104001004,H104001005";

У меня есть эта строка, и я должен удалить "H104001002" из приведенной выше строки в ASP.Net C#.

Что я уже пробовал:

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

Hein Pauwelyn

Почему он не должен работать, заменяя? Во всяком случае, вы также можете попробовать использовать регулярное выражение. https://msdn.microsoft.com/en-us/library/xwewhkd1(v=против 110). aspx

4 Ответов

Рейтинг:
30

OriginalGriff

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

string Batches = ",,H104001002,H104001003,H104001004,H104001005";
string changed = Batched.Replace("H104001002", "");
будут делать это.
Но ... если строка не является "фиксированной" или может правильно отображаться в других местах данных, то это не является жизнеспособной альтернативой. Например, мы подписываем этот метод на этом:
string Batches = ",,H104001002,H104001003,H104001002,H104001005"
Дал бы тебе:
",,,H104001003,,H104001005"

Есть несколько способов сделать это: вы можете разделить строку, убить "плохое" местоположение и восстановить его:
string Batches = ",,H104001002,H104001003,H104001004,H104001005";
string[] parts = Batches.Split(',');
parts[2] = "";
string changed = string.Join(",", parts);

Или вы можете использовать регулярное выражение:
string Batches = ",,H104001002,H104001003,H104001004,H104001005";
string changed = Regex.Replace(Batches, @"(?<=\,\,).+?(?=,)", "");

Но...Я бы посоветовал вам взглянуть на использование существующего CSV-парсера: Быстрый читатель CSV[^]- это хороший выбор.


Abrar Kazi

Спасибо :)

OriginalGriff

Пожалуйста!

Рейтинг:
24

Hein Pauwelyn

Вы могли бы попробовать использовать регулярные выражения (или регулярное выражение). В вашем случае код будет таким:

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string input = ",,H104001002,H104001003,H104001004,H104001005"
      string pattern = "H104001002";
      string replacement = "";
      Regex rgx = new Regex(pattern);
      string result = rgx.Replace(input, replacement);

      Console.WriteLine("Original String: {0}", input);
      Console.WriteLine("Replacement String: {0}", result);                             
   }
}


Abrar Kazi

Спасибо :)

Рейтинг:
17

Karthik_Mahalingam

// using simple Replace method.
     string Batches = ",,H104001002,H104001003,H104001002,H104001004,H104001005";
     string find = "H104001002";
     Batches = Batches.Replace(find, "");


     // using Array/List to replace it, this will remove the empty items
     List<string> lst = new List<string>();
     var array = Batches.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
     if(array.Contains(find))
         for (int i = 0; i < array.Length; i++)
         {
             if (array[i] != find)
                 lst.Add(array[i]);
         }
     Batches = string.Join(",", lst);

     // using Linq
    Batches= string.Join(",", Batches.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Where(k => k != find).ToArray());


Abrar Kazi

Спасибо :)

Рейтинг:
0

Member 10062432

вы можете разделить на,

string[] namesArray = "Tom,Scott,Bob".Split(',');


Maciej Los

Мой голос 1. Метод Split вернет массив строк. ОП хочет удалить определенный элемент в строке разделены запятой.