разбить строку, используя "," и сохранить в списке массивов - PullRequest
1 голос
/ 01 июля 2019
  1. Вот string в C # : string Id = "1LE, 1GE";
  2. Split string с использованием запятая .
  3. Сохраните его в ArrayList.

Мой код не работает на онлайн-компиляторе.

string Id = "1LE, 1GE";
ArrayList centerIds_list = new ArrayList();
centerIds_list.AddRange(centerIds);

Мне нужен вывод как 2элементы с разбитой строкой .

Ответы [ 5 ]

4 голосов
/ 01 июля 2019

Ну, string.Split возвращает массив - string[], поэтому, если вы не собираетесь добавлять / удалять элементы, просто поставьте

  string[] centerIds_list = Id.Split(',');

Если вы хотите добавить / удалить элементы в / из коллекции (и поэтому массив исключен), попробуйте List<string> вместо устаревшие ArrayList:

   List<string> centerIds_list = new List<String>(Id.Split(','));

Наконец, если вы настаиваете на ArrayList:

   ArrayList centerIds_list = new ArrayList(Id.Split(','));

Немного подробнее:

"1LE, 1GE".Split(',') вернет "1LE", " 1GE", обратите внимание начальный пробел . Вы можете избавиться от него, либо разделив на ", " (не ','):

   Id.Split(new string[] { ", "}, StringSplitOptions.None);

Или с помощью Linq : .Select(item => item.Trim()) с последующей материализацией (.ToArray() или .ToList()), например,

   string[] centerIds_list = Id
     .Split(',')
     .Select(item => item.Trim())
     .ToArray();

или

   List<string> centerIds_list = centerIds_list = Id
     .Split(',')
     .Select(item => item.Trim())
     .ToList();

или

   ArrayList centerIds_list = new ArrayList(Id
     .Split(',')
     .Select(item => item.Trim())
     .ToArray());
1 голос
/ 01 июля 2019

В наши дни никто не использует ArrayList, вместо этого они используют строго типизированный универсальный. В вашем случае это будет List<string>.

Чтобы получить детали как List<string>, вы можете сделать:

Id.Split(',').ToList();

Если вы хотите удалить промежутки вокруг отдельных частей, то вы можете сделать:

Id.Split(',').Select(s => s.Trim()).ToList();
1 голос
/ 01 июля 2019

Вам не хватает строки

var centerIds = Id.Split(',');

Вам нужно разделить строку на comma, а затем создать экземпляр ArrayList.

Попробуйте код ниже

string Id="1LE, 1GE";
var centerIds = Id.Split(','); //This was missing
ArrayList centerIds_list = new ArrayList();
centerIds_list.AddRange(centerIds);

Поскольку большинство комментариев затрагивают этот вопрос, я также хочу включить его.

Используйте List<string> вместо ArrayList.

List<string> centerIds_list = "1LE, 1GE".Split(',').ToList(); //One line solution

Если вы хотите избавиться от пробелов, используйте Trim()

List<string> centerIds_list = "1LE, 1GE".Split(',').Select(x => x.Trim()).ToList();
0 голосов
/ 02 июля 2019

Я знаю, что это не отвечает на вопрос сам по себе, но если производительность является проблемой, и вы работаете над большим объемом данных, которые нужно разделить (например, большой файл CSV), то посмотрите на эту статью, так как говорит об использовании Span в качестве альтернативы String.split.

[https://ladeak.wordpress.com/2019/06/21/the-power-of-span/amp/?__twitter_impression=true]

0 голосов
/ 02 июля 2019

string Ids = "1LE, 1GE";Список centerIds_list = Ids.Split (','). Select (x => x.Trim ()). ToList ();foreach (var item в centerIds_list) {

           Console.WriteLine(item);  

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...