самый эффективный способ получить различные переменные из строки - PullRequest
1 голос
/ 01 марта 2011

В настоящее время я работаю над программным обеспечением для дистанционного управления.Модуль выдает следующую строку (без каких-либо разрывов строк или чего-либо еще):

...some_general_infomations,param1=value1,param2=value2,param3=value3,paramN=valueN,...  

Мне нужно как-то назначить эти значения некоторым переменным.Поскольку длина этой строки варьируется, я не могу работать с подстроками (поправьте меня, если я ошибаюсь).

Какой самый эффективный (и самый быстрый) способ сделать это?

РЕДАКТИРОВАТЬ: решение @ Дарина работало нормально для большинства сообщений, но вот это действительно сложно:

CFG=0<\r><\n>BOU=0<\r><\n>ALA:D1=132,D2=0,D3=0<\r><\n>COD1:S=13<\r><\n>-C1=5,N1=12345678,CLS=0,VAL=0<\r><\n>-C2=5,N2=,CLS=0,VAL=0<\r><\n>COD2:S=0<\r><\n>-C1=0,N1=,CLS=0,VAL=0<\r><\n>ENT:APPEL1=0,APPEL2=0<\r><\n>USI:DEP=0,AES=1,V8K=1,FIL=1,DSP=0,RSC=1,AL3=0,TDA=1,A64=0,CCS=0,RES=0,xxx=0,xxx=0,5AS=1<\r><\n>PERF:<\r><\n>-DMIN=0,0,<\r><\n>OK<\r><\n>

Мне нужно, по крайней мере, получить значения для S, C1, N1.Даже если я удаляю переводы строк, эти параметры разделяются запятой или двоеточием.Как я мог обработать эту строку?

Ответы [ 3 ]

4 голосов
/ 01 марта 2011

Хороший сплит должен работать:

var input = "...some_general_infomations,param1=value1,param2=value2,paramN=valueN";
var tokens = input.Split(',');
if (tokens.Length > 0)
{
    foreach (var token in tokens)
    {
        var parts = token.Split('=');
        if (parts.Length > 1)
        {
            string paramName = parts[0];
            string paramValue = parts[1];
        }
    }
}
2 голосов
/ 01 марта 2011

Используйте метод Split класса string.

string[] pairs = words.Split(new Char [] {','});
foreach(string pair in pairs)
{
    string[] kv = pair.Split(new Char [] {'='});

    // kv[0] will hold the pair param name
    // kv[1] will hold the pair param value
}

В коде есть несколько предположений: у вас есть только пары имя / значение, разделенные ,, и что каждая пара имеет = между именем и значением.

1 голос
/ 01 марта 2011

Регулярные выражения являются стандартным способом сделать это; как то так:

/,([^=]+)=([^,$]+)/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...