我有一个字符串 - filterArg
和字符串数组 - arrayColDef
,如下面的代码所示。我正在尝试将字符串 filterArg
拆分为 |~|
并尝试从 filterArg
匹配 arrayColDef
值。
任何人都可以告诉我如何在代码中注明 ToDo 的值
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
string filterArg = "ZipCode=2130|~|ZipPlace=KNAPPER";
string[] arrayColDef = { "ZipCode", "Space", "ZipPlace" };
foreach (var item in arrayColDef)
{
var key = item;
var value = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries);//TODO: here value should hold = 2130 for first itteration
ht.Add(item, value);
}
}
答案 0 :(得分:0)
我认为你在arrayColDef
上进行复杂迭代,通过拆分字符串迭代并提取值更容易。
你可以做类似下面的事情。
static void Main(string[] args)
{
Hashtable ht = new Hashtable();
string filterArg = "ZipCode=2130|~|ZipPlace=KNAPPER";
string[] arrayColDef = { "ZipCode", "Space", "ZipPlace" };
var properties = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries);
foreach (var property in properties)
{
var nameValue = property.Split(arrayColDef, StringSplitOptions.RemoveEmptyEntries);
var item = property.Split('=').First(); // get key
var value = nameValue.First().TrimStart('='); // get value
ht.Add(item, value);
}
}
答案 1 :(得分:0)
Hashtable ht = new Hashtable();
string filterArg = "ZipCode=2130|~|ZipPlace=KNAPPER";
string[] arrayColDef = { "ZipCode", "Space", "ZipPlace" };
var filterArr = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries)
.Select(x => x.Split('='));
foreach (var item in arrayColDef)
{
var key = item;
var v = filterArr.FirstOrDefault(x => x[0] == item);
if (v != null&&v.Length>1)
{
ht.Add(item, v[1]);
}
}
foreach (var key in ht.Keys)
{
Console.WriteLine("Key:{0} Value:{1}", key, ht[key]);
}
Space
已被忽略
答案 2 :(得分:0)
过滤器分割为
var value = filterArg.Split(new string[] { "|~|" }, StringSplitOptions.RemoveEmptyEntries);//TODO: here value should hold = 2130 for first itteration
返回一个数组。您可以通过过滤和替换为linq来获取最终值:
string finalValue = value.Where(m => m.Contains(item)).Select(m => m.Replace(item+"=","")).FirstOrDefault();
然后,该值位于finalValue变量中。
问候