好吧,我提前警告你,我对正则表达式的理解是非常有限的(多年来,我尽我所能学习它们,但说实话,我认为他们只是吓唬我)使用正则表达式创建字符串数组
比方说,我有以下字符串:
string keyValues = "CustomerId=1||OrderId=12||UserId=a1dcd568-f129-419b-b51e-be2dbb67de0f"
此字符串表示键值对,由用户定义的字符串(在这种情况下||
分隔)(例如,key1=value1||key2=value2
)。我试图从这个字符串中提取密钥并将它们存储在一个数组中。该数组是这样的:
{"CustomerId", "OrderId", "UserId"}
我能想到的最好的办法是使用正则表达式(如果有人有更好的解决办法,请分享)。这里就是我想要做的事:
string delimiter = "||";
string[] keys = Regex.Split(keyValues, "=.*" + delimiter);
我可能是错的,但我的理解是,这个正则表达式应该找到与=
开始,以delimiter
结尾的字符串,与任何数量的方式之间的任何字符。这将在那些位置分割字符串,留下我与原来的钥匙,而是,我的钥匙阵列看起来像这样:
{"", "C", "u", "s", "t", "o", "m", "e", "r", "I", "d", "", "", ...}
正如你所看到的,=value||
部分被剥离。谁能告诉我我做错了什么?
编辑
在我的情况下,分隔符||
是一个变量。我没有提到这一点,因为我认为我可以用delimiter
替换对||
的任何引用。从大多数给出的答案中,我现在看到这是一个重要的细节。
这两个网站可能真的有助于理解正则表达式: HTTP:/ /www.google.com/support/enterprise/static/postini/docs/admin/en/admin_ee_cu/cm_regex.html和 http://gskinner.com/RegExr/ – Billy
@Billy:即[Postini的](HTTP: //www.google.com/support/enterprise/static/postini/docs/admin/en/admin_ee_cu/cm_regex.html)页面只覆盖了POSIX ERE的味道,这是极其有限的,并与.NET的正则表达式不兼容。 [RegExr](http://gskinner.com/RegExr/)使用ActionScript风格,它更加兼容,但功能仍然非常缺乏。 ** [本网站](http://www.regular-expressions.info/)**更有用,并且MS自己的** [docs](http://msdn.microsoft.com/en-us/ library/hs600312(v = vs.110).aspx)**非常好。 –
@Alan Moore:你说的没错。我还从您分享的网站上获取了大量信息,但这是一整套信息。我认为一些基本的解释会很好:)。 – Billy