Разделение строки на подстроки - PullRequest
0 голосов
/ 24 февраля 2009

Я хочу разделить строку, состоящую из одного или нескольких двухбуквенных кодов, разделенных запятыми, на двухбуквенные подстроки и поместить их в массив строк или другую подходящую структуру данных. В какой-то момент результат привязывается к комбинированному списку, поэтому это необходимо учитывать.

Строка, которой я хочу манипулировать, может быть пустой, состоять только из двух букв или состоять из нескольких двухбуквенных кодов, разделенных запятыми (и, возможно, пробелом).

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

Итак ... какую структуру данных вы бы порекомендовали мне использовать и как бы вы ее реализовали?

Ответы [ 4 ]

11 голосов
/ 24 февраля 2009

Определенно, по крайней мере, начинайте со строкового массива, потому что это тип возвращаемого значения string.Split():

string MyCodes = "AB,BC,CD";
char[] delimiters = new char[] {',', ' '};
string[] codes = MyCodes.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);

Обновление: добавлено место в разделителях. Это будет иметь эффект обрезки пробелов из ваших строк результата.

6 голосов
/ 24 февраля 2009

Хотелось бы что-нибудь подобное?

var list = theString.Split(", ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries).ToList();
3 голосов
/ 24 февраля 2009

Мой ответ "правильный", но я предлагаю ответ Джоэла Кохорна.

public static string[] splitItems(string inp)
{
    if(inp.Length == 0)
        return new string[0];
    else
        return inp.Split(',');
}
2 голосов
/ 24 февраля 2009

Если вы просто собираетесь связать со структурой, тогда String[] должно подойти - если вам нужно работать с данными, прежде чем использовать их в качестве источника данных, тогда List<String>, вероятно, является лучшим выбором.

Вот пример:

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        String s = "ab,cd,ef";

        // either a String[]
        String[] array = s.Split(new Char[] {','});
        // or a List<String>
        List<String> list = new List<String>(s.Split(new Char[] { ',' }));
    }
}
...