解析c#中的长字符串并将这些值赋给参数

时间:2011-05-10 18:19:49

标签: c# string parsing

我在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 个答案:

答案 0 :(得分:3)

试试这个:

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 :(得分:1)

尝试在新行字符上拆分字符串,然后它看起来像字典,键值由||分隔。另一个分裂为“||”应该给你你想要的东西。

信封代码背面

  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]);
        }
    }

答案 2 :(得分:0)

您可以使用TextFieldParser类来解析此文件,特别是如果它是固定宽度字段或已知分隔符。

有:

  

提供解析结构化文本文件的方法和属性。

虽然它位于Microsoft.VisualBasic.Text命名空间中,但它是一个.NET程序集,可以在所有.NET项目中使用。

答案 3 :(得分:0)

假设您的字符串只包含以"||", "\r" or "\n"分隔的值。

string str =“School || Abc \ r \ n || State || 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]);
        }