我有一个要存储在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并消除其余部分。而且“名称”的值可能会有所不同,因此我无法确定要截断的长度。
答案 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].Value
和match.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]+)+)
例如:
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