C# 分道扬镳;然后on=,使用String.Split时出现问题,需要正则表达式
我需要将上面的行拆分2次,第一次是逗号字符;第二次在=符号上 它不能正常工作,因为值部分也有=符号 我的代码无法正常工作,因为它假设值部分没有“=”符号,并且没有使用regex simply String.Split(“=”)C# 分道扬镳;然后on=,使用String.Split时出现问题,需要正则表达式,c#,regex,C#,Regex,我需要将上面的行拆分2次,第一次是逗号字符;第二次在=符号上 它不能正常工作,因为值部分也有=符号 我的代码无法正常工作,因为它假设值部分没有“=”符号,并且没有使用regex simply String.Split(“=”) 有人能帮我处理正则表达式吗?我在键/值的周围加了双引号,以帮助把事情分开。你能做的是,你可以使用IndexOf来获取第一个=的索引 "key1"="value1 http://www.example.com?a=1";"key2"="value2 http://www.e
有人能帮我处理正则表达式吗?我在键/值的周围加了双引号,以帮助把事情分开。你能做的是,你可以使用
IndexOf
来获取第一个=
的索引
"key1"="value1 http://www.example.com?a=1";"key2"="value2 http://www.example.com?a=2";
然后可以使用字符串.Substring
来获取键和值
int i = myStr.IndexOf('=');
您可以做的是,您可以使用
IndexOf
来获取第一个=
"key1"="value1 http://www.example.com?a=1";"key2"="value2 http://www.example.com?a=2";
然后可以使用字符串.Substring
来获取键和值
int i = myStr.IndexOf('=');
我没有使用正则表达式,但您可以执行以下操作:
string key = myStr.Substring(0, i)
string value = myStr.SubString(i+1);
我没有使用正则表达式,但您可以执行以下操作:
string key = myStr.Substring(0, i)
string value = myStr.SubString(i+1);
你的正则表达式应该是这样的
string test =@"""key1""=""value1 http://www.example.com?a=1"";""key2""=""value2 http://www.example.com?a=2""";
string[] arr = test.Split(';');
foreach (string s in arr)
{
int index = s.IndexOf('=');
string key = s.Substring(0, index);
string value = s.Substring(index+1, s.Length - index);
}
遗憾的是,我不知道C#
,但这应该适用于每种语言。要获得结果,您必须为每个匹配项选择:
"(.+?)"="(.+?)"
你的正则表达式应该是这样的
string test =@"""key1""=""value1 http://www.example.com?a=1"";""key2""=""value2 http://www.example.com?a=2""";
string[] arr = test.Split(';');
foreach (string s in arr)
{
int index = s.IndexOf('=');
string key = s.Substring(0, index);
string value = s.Substring(index+1, s.Length - index);
}
遗憾的是,我不知道C#
,但这应该适用于每种语言。要获得结果,您必须为每个匹配项选择:
"(.+?)"="(.+?)"
使用
String.Split
和StringSplitOptions.removeMptyEntries
以及带分隔符的字符串数组
group(1) as keys
group(2) as values
结果={string[4]} [0]:“键1” [1] :“价值1http://www.example.com?a=1" [2] :“键2” [3] :“价值2http://www.example.com?a=2"
我使用以下分隔符(包括双引号):
“;”
“=”
“
使用String.Split
和StringSplitOptions。删除mptyentries
和带有分隔符的字符串数组
group(1) as keys
group(2) as values
结果={string[4]} [0]:“键1” [1] :“价值1http://www.example.com?a=1" [2] :“键2” [3] :“价值2http://www.example.com?a=2"
我使用以下分隔符(包括双引号):
”;“
“=”
“
使用字符串.Split(char[],int)
重载(http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx). 第二个参数将限制要返回的子字符串的数量。如果知道字符串始终至少有1个等号(键/值对),则将第二个参数设置为2
result = {string[4]}
[0]: "key1"
[1]: "value1 http://www.example.com?a=1"
[2]: "key2"
[3]: "value2 http://www.example.com?a=2"
-
结果:
使用String.Split(char[],int)
重载(http://msdn.microsoft.com/en-us/library/c1bs0eda.aspx). 第二个参数将限制要返回的子字符串的数量。如果知道字符串始终至少有1个等号(键/值对),则将第二个参数设置为2
result = {string[4]}
[0]: "key1"
[1]: "value1 http://www.example.com?a=1"
[2]: "key2"
[3]: "value2 http://www.example.com?a=2"
-
结果:
您还可以尝试对多个令牌使用Split方法 在这里,这将为您提供一个字符串[],其中包含根据您的令牌拆分的多个值 如果你想删除空条目,你也可以这样做
Key: key1, Value: value1 http://www.example.com?a=1
Key: key2, Value: value2 http://www.example.com?a=2
结果
string strValue = @"""key1""=""value1 http://www.example.com?a=1"";""key2""=""value2 http://www.example.com?a=2""";
string[] strSplit = strValue.Split(new string[] { "\";\"", "\"=\"", "\"" }, StringSplitOptions.RemoveEmptyEntries);
您还可以尝试对多个令牌使用Split方法 在这里,这将为您提供一个字符串[],其中包含根据您的令牌拆分的多个值 如果你想删除空条目,你也可以这样做
Key: key1, Value: value1 http://www.example.com?a=1
Key: key2, Value: value2 http://www.example.com?a=2
结果
string strValue = @"""key1""=""value1 http://www.example.com?a=1"";""key2""=""value2 http://www.example.com?a=2""";
string[] strSplit = strValue.Split(new string[] { "\";\"", "\"=\"", "\"" }, StringSplitOptions.RemoveEmptyEntries);
您需要匹配而不是拆分文本
strSplit {string[4]} string[]
[0] "key1"
[1] "value1 http://www.example.com?a=1"
[2] "key2"
[3] "value2 http://www.example.com?a=2"
var-keys=Regex.Matches(您的字符串,“(.*?”=”)*(http.*?“;”).Cast()。选择(x=>
新的
{
key=x.Groups[1]。值,
value=x.Groups[2]。value
}
);
foreach(键入键)
{
key.key;//键值
key.value;//值
}
您需要匹配而不是拆分文本
strSplit {string[4]} string[]
[0] "key1"
[1] "value1 http://www.example.com?a=1"
[2] "key2"
[3] "value2 http://www.example.com?a=2"
var-keys=Regex.Matches(您的字符串,“(.*?”=”)*(http.*?“;”).Cast()。选择(x=>
新的
{
key=x.Groups[1]。值,
value=x.Groups[2]。value
}
);
foreach(键入键)
{
key.key;//键值
key.value;//值
}
“我在两个键/值周围添加了双引号,以帮助将它们分开”
那么双引号通常不在那里吗?当你说“逗号”时,我认为你的意思是“分号”。你提供了“给定”;什么是“预期”?尝试将此工具与上述值一起使用。然后,您可以使用正则表达式,直到它给出所需的值。请输入您的问题,您的预期结果应该是什么样的这将使某人更容易提供足够的建议/帮助“我在两个键/值周围添加了双引号,以帮助将事情分开”
所以双引号通常不存在吗?当你说“逗号”时,我想你的意思是“分号”。你提供了“给定”;什么是“预期”?尝试将此工具与上述值一起使用。然后,您可以使用正则表达式,直到它提供所需的值。请在您的问题中输入您的预期结果应该是什么样子。这将使某人更容易提供足够的建议/帮助。个人而言,Chris Gessler的示例运行良好,并且它利用了.NET已内置的功能,特别是在您不太熟悉的情况下舒适地使用regexpernally Chris Gessler的示例工作得很好,它利用了.NET已经内置的功能,特别是当您不太习惯使用RegExTheString.Split(char[],int)
重载为您完成了所有的IndexOf/Substring
功能。String.Split(char[],int)
重载为您完成了所有的IndexOf/Substring
功能。为什么2,第一个=符号很重要不,第二个在url中,应该忽略。否?@user1361315-因为count参数是要返回的最大子字符串数。关键是子串1,所有元素都在第一个等号的左边。第一个等号右边的所有东西都是子串2。为什么2,第一个=号才是重要的