парсинг длинной строки в c # и присвоение этих значений параметрам - PullRequest
0 голосов
/ 10 мая 2011

У меня есть эта строка в C # -

".... School||Abc\r\n...State||CA\r\n..."

Школа и штат где-то в строке.Мне нужно разобрать строку таким образом, чтобы я получил значения School и State для моих параметров

string school = abc (from String after parsing)
string state = CA (from string after parsing)

Ответы [ 4 ]

3 голосов
/ 10 мая 2011

Попробуйте это:

string longStr = "School||Abc\r\nState||CA\r\n";
string[] keyValPairs = s.Split("\r\n".ToCharArray());
Dictionary<string, string> info = new Dictionary<string, string>();

foreach(string pair in keyValPairs)
{
   string[] split = pair.Split("||");
    //split[0] is the key, split[1] is the value
   info.Add(split[0], split[1]);
}

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

string school = info["School"];
string state = info["State"];

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

1 голос
/ 10 мая 2011

Попробуйте разбить строку на символы новой строки, после чего она будет выглядеть как словарь, ключевые значения которого разделены знаком ||.Еще один раздел на "||"должен дать вам то, что вы хотите.

Обратно код конверта

  private static void ParseMyString(string longString) {
        IEnumerable<string> shortStrings = longString.Split("\r\n".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);


        foreach(var ss in shortStrings) {
            var kvp = ss.Split("||".ToCharArray());
            Console.WriteLine("{0} - {1}", kvp[0], kvp[1]);
        }
    }
0 голосов
/ 10 мая 2011

Предполагая, что ваша строка содержит только значения, разделенные "||", "\r" or "\n".

string str = "Школа || Abc \ r \ n || Штат || CA \ r \ n || AA || AA"; str = str.Trim (); str = str.Replace ("\ r", string.Empty); str = str.Replace ("\ n", string.Empty);

        string[] keyValue = str.Split(new string[] { "||" }, StringSplitOptions.None);
        Dictionary<string, string> KeyValDic = new Dictionary<string, string>();

        for (int i = 0; i < keyValue.Length; i++,i++)
        {
            KeyValDic.Add(keyValue[i], keyValue[i + 1]);
        }
0 голосов
/ 10 мая 2011

Вы можете использовать класс TextFieldParser для анализа этого файла, в частности, если он имеет поля фиксированной ширины или имеет известные разделители.

It:

Предоставляет методы и свойства для разбора структурированных текстовых файлов.

Хотя он находится в пространстве имен Microsoft.VisualBasic.Text, это сборка .NET и может использоваться во всех проектах .NET.

...