如何在C#中将字符串拆分为两个单独的变量

时间:2019-07-05 22:57:22

标签: c# string replace

我有一个要存储在C#中两个不同变量中的字符串。

s= "Name=team1; ObjectGUID=d8fd5125-b065-48cb-b5f3-c20f509b7476"

我希望Var1 = team1&Var2 = d8fd5125-b065-48cb-b5f3-c20f509b7476

这就是我想要做的:

var1 = s.Replace("Name=","").Replace("; ObjectGUID=", "");

但是我无法弄清楚如何将Name值分为var1并消除其余部分。而且“名称”的值可能会有所不同,因此我无法确定要截断的长度。

4 个答案:

答案 0 :(得分:2)

由“;”分隔然后除以'='。也适用于任何键/值对,例如连接字符串中的键/值对。

var values = s.Split(';').Select(kv => kv.Split('=')[1]).ToArray();
var var1 = values[0];
var val2 = values[1];

答案 1 :(得分:1)

使用

using System.Text.RegularExpressions;

您可以获得

var match = Regex.Match(s, @"Name=([\d\w]+); ObjectGUID=([\d\w\-]+)");

,然后您的值在match.Groups[1].Valuematch.Groups[2].Value

答案 2 :(得分:1)

您可以使用IndexOf指向“ =”,而Substring则获取下一个值。 使用系统;

list

该示例显示以下输出: 数组中的初始值为: 姓名:Felica Walker 标题:Mz。 年龄:47 地点:巴黎 性别:F
我们只想检索关键信息。那是: 费利卡·沃克(Felica Walker) Mz。 47 巴黎 F

答案 3 :(得分:1)

您可以使用正则表达式,其中可以使用否定的字符类在与Name不匹配的组1中捕获;的值。

可以使用与数字0-9或字符a-f匹配1+倍的重复模式在组2中捕获ObjectGUID的值。然后重复该模式1次以上,再加上-

Name=([^;]+); ObjectGUID=([a-f0-9]+(?:-[a-f0-9]+)+)

.NET regex demo | C# demo

例如:

string pattern = @"Name=([^;]+); ObjectGUID=([a-f0-9]+(?:-[a-f0-9]+)+)";
string s= "Name=team1; ObjectGUID=d8fd5125-b065-48cb-b5f3-c20f509b7476";

Match m = Regex.Match(s, pattern);
string var1 = m.Groups[1].Value;
string var2 = m.Groups[2].Value;

Console.WriteLine(var1);
Console.WriteLine(var2);

结果

team1
d8fd5125-b065-48cb-b5f3-c20f509b7476