Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C语言解析字符串#_C# - Fatal编程技术网

C# 用C语言解析字符串#

C# 用C语言解析字符串#,c#,C#,我从一个方法中得到以下字符串。我想对它进行解析并配对。输入字符串的顺序不会更改 输入: ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9 输出 Name value1 Title value2 School value3 . . . Age value9 我想我可以通读字符串,并在前进时将值分配到左手边,依此类推。但是,我对C#非常陌生。使用s

我从一个方法中得到以下字符串。我想对它进行解析并配对。输入字符串的顺序不会更改

输入:

ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9
输出

Name    value1
Title   value2
School  value3
.
.
.
Age     value9

我想我可以通读字符串,并在前进时将
分配到左手边,依此类推。但是,我对C#非常陌生。

使用
string.Split
和Split input string列出键值对,然后将每对键值对拆分为键和值。这是全部

您可以这样做:

void Main() { string str=“ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9”

var tempStr=str.Split(',');
var result=新列表();
foreach(tempStr中的var val)
{
var temp=val.Split('=');
var kv=新的键值();
kv.名称=温度[0];
kv.值=温度[1];
结果:增加(千伏);
}
}
公共类键值
{
公共字符串名称{get;set;}
公共字符串值{get;set;}
}

如果您不需要第一部分,可以使用如下字符串拆分来完成

  • 使用
    String.Split
    方法创建字符串序列
    {“ku=value1”,“ku=value2”,…}
  • 使用Linq的
    Select
    方法应用附加转换
  • 对“=”字符上的每个项目再次使用拆分
  • 选择“=”右侧的项目,位于新拆分项目的索引1
  • 循环浏览所有内容并打印结果
  • 这是密码

    var target = "ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9";
    
    var split = target.Split(',').Select(a=>a.Split('=')[1]).ToArray();
    var names = new[]{"Name","Title","School",...,"Age"};
    
    for(int i=0;i<split.Length;i++)
    {
        Console.WriteLine(names[i]+"\t"+split[i]);
    }
    
    var target=“ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9”;
    var split=target.split(“,”).Select(a=>a.split(“=”)[1]).ToArray();
    变量名称=新[]{“名称”、“头衔”、“学校”、“年龄”};
    
    对于(int i=0;i我建议尝试这种方法。Split()加正则表达式

        string inputString = "ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9";
    
        string pattern = "(.*)=(.*)";
    
        foreach(var pair in inputString.Split(','))
        {
    
            var match = Regex.Match(pair,pattern); 
            Console.WriteLine(string.Format("{0} {1}",match.Groups[1].Value, match.Groups[2].Value));
        }
    

    您可以使用string.split(“,”)将其分解为各个部分,然后循环遍历这些部分,并使用string.split(“=”)来获取键/值对。正则表达式在这里是多余的;如果要使用它们,为了提高效率,您应该实例化一个
    Regex
    实例一次,然后使用非静态
    Match()
    member函数而不是static
    Regex.Match()
    。但是涉及
    String.Split()
    的其他答案更优。我明白了。谢谢您的评论
        string inputString = "ku=value1,ku=value2,ku=value3,ku=value4,ku=value5,lu=value6,lu=value7,lu=value8,lu=value9";
    
        string pattern = "(.*)=(.*)";
    
        foreach(var pair in inputString.Split(','))
        {
    
            var match = Regex.Match(pair,pattern); 
            Console.WriteLine(string.Format("{0} {1}",match.Groups[1].Value, match.Groups[2].Value));
        }