C # строки манипулирования Regex или подстрока? - PullRequest
3 голосов
/ 02 ноября 2011

У меня есть

string CCstring = "CC01=50 CC02=300 CC03=500 CC04=40";

Я хочу сохранить отдельные значения в отдельных строках, таких как:

for(int i = 0; i<=4; i++)
{
   string suffix = i.ToString().PadLeft(2, '0');
   string CCindividual = CCindividual + i;
   CCindividual = //THIS IS WHERE I WOULD LIKE TO GET MY INDIVIDUAL VALUES i.e 50,300,500,40;
    Console.WriteLn("CC" + i + " =" + CCIndividual);//Testing
}

Какие манипуляции со строками следует использовать Regex или Substring.Как будет выглядеть фрагмент кода?

Ответы [ 6 ]

3 голосов
/ 02 ноября 2011

Одна строка:

string[] CCindividual = Regex.Split(CCstring, "CC[0-9]+=").Where(x => x != "").
    Select(x => x.Trim()).ToArray<String>();

Не уверен, что это более эффективный способ.

2 голосов
/ 02 ноября 2011

Разве вы не можете использовать разделение для первого разделения на пробелы, а затем на '='?Это проще, чем регулярное выражение или подстрока imho.

2 голосов
/ 02 ноября 2011

Ни.Вы можете использовать string.Split для получения массива:

string CCstring = "CC01=50 CC02=300 CC03=500 CC04=40";
string[] strings = CCstring.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

После этого вы можете сделать то же самое для =, используя string.Split(new char[] { '=' }, StringSplitOptions.RemoveEmptyEntries);.

1 голос
/ 02 ноября 2011

просто используйте String.Split

        string CCstring = "CC01=50 CC02=300 CC03=500 CC04=40";
        var result = CCstring.Split(' ')
            .Select(s => s.Split('='))
            .ToDictionary(kv => kv[0], kv => Convert.ToInt64(kv[1]));
1 голос
/ 02 ноября 2011

Если вам не нужен этот код для очень очень эффективного запуска.Вы должны беспокоиться о том, что читается для вас и вашей команды (иногда это подстрока, разделение и т. Д., А иногда и регулярное выражение).Только вы действительно можете решить.

0 голосов
/ 02 ноября 2011

Глядя на вашу CCstring, вы определенно быстрее пройдете через строковые символы всего один раз. Конечно, это не стоит того, пока у вас не будет тонны таких строк.

Итак, да, проще использовать просто string.Split один раз для пробелов и один раз для каждого фрагмента, чтобы разделить на '='.

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