好吧,我提前警告你,我对正则表达式的理解非常有限(这些年来我一直在努力学习它们,但说实话,我觉得它们只是吓到我了。)
假设我有以下字符串:
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
。从给出的大多数答案中,我现在看到这是一个重要的细节。