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”,…}
Select
方法应用附加转换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函数而不是staticRegex.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));
}