gpt4 book ai didi

c# - 拆分具有键值对的文本行,其中值可以为空

转载 作者:行者123 更新时间:2023-11-30 13:21:53 26 4
gpt4 key购买 nike

我需要拆分一行文本

  1. 交付指令的一般语法是|||名称|值||名称|值||……..|||
  2. 每个交付指令以 3 个竖线字符开始和结束 - |||
  3. 交付指令是一组由单个竖线分隔的名称/值对,例如名称|值
  4. 每个名称值对由 2 个竖线字符分隔 ||
  5. 名称和值不能包含管道符
  6. 任何对的值都可以是空字符串。

我需要一个正则表达式来帮助我解决上述问题。

我用我有限的 Regex 技能进行的最新尝试:

string SampleData = "|||env|af245g||mail_idx|39||gen_date|2016/01/03 11:40:06||docm_name|Client Statement (01.03.2015−31.03.2015)||docm_cat_name|Client Statement||docm_type_id|9100||docm_type_name|Client Statement||addr_type_id|1||addr_type_name|Postal address||addr_street_nr|||addr_street_name|Robinson Road||addr_po_box|||addr_po_box_type|||addr_postcode|903334||addr_city|Singapore||addr_state|||addr_country_id|29955||addr_country_name|Singapore||obj_nr|10000023||bp_custr_type|Customer||access_portal|Y||access_library|Y||avsr_team_id|13056||pri_avsr_id|||pri_avsr_name|||ctact_phone|||dlv_type_id|5001||dlv_type_name|Channel to standard mail||ao_id|14387||ao_name|Corp Limited||ao_title|||ao_mob_nr|||ao_email_addr||||??";
string[] Split = Regex.Matches(SampleData, "(\|\|\|(?:\w+\|\w*\|\|)*\|)").Cast<Match>().Select(m => m.Value).ToArray();

预期输出应如下(基于提供的示例数据字符串):

  1. 环境|af245g
  2. mail_idx|39
  3. gen_date|2016/01/03 11:40:06
  4. docm_name|客户声明 (01.03.2015−31.03.2015)
  5. docm_cat_name|客户声明
  6. docm_type_id|9100
  7. docm_type_name|客户声明
  8. addr_type_id|1
  9. addr_type_name|邮政地址
  10. addr_street_nr|
  11. addr_street_name|罗宾逊路
  12. 地址邮箱|
  13. addr_po_box_type|
  14. 地址邮政编码|903334
  15. 地址城市|新加坡
  16. 地址状态|
  17. addr_country_id|29955
  18. addr_country_name|新加坡
  19. obj_nr|10000023
  20. bp_custr_type|客户
  21. access_portal|Y
  22. access_library|Y
  23. avsr_team_id|13056
  24. pri_avsr_id|
  25. pri_avsr_name|
  26. ctact_phone|
  27. dlv_type_id|5001
  28. dlv_type_name|标准邮件 channel
  29. ao_id|14387
  30. ao_name|股份有限公司
  31. ao_title|
  32. ao_mob_nr|
  33. ao_email_addr|

最佳答案

您也可以在不使用 Regex 的情况下执行此操作。它只是简单的拆分。

    string nameValues = "|||zeeshan|1||ali|2||ahsan|3|||";
string sub = nameValues.Substring(3, nameValues.Length - 6);
Dictionary<string, string> dic = new Dictionary<string, string>();
string[] subsub = sub.Split(new string[] {"||"}, StringSplitOptions.None);

foreach (string item in subsub)
{
string[] nameVal = item.Split('|');
dic.Add(nameVal[0], nameVal[1]);
}

foreach (var item in dic)
{
// Retrieve key and value here i.e:
// item.Key
// item.Value
}

希望这对您有所帮助。

关于c# - 拆分具有键值对的文本行,其中值可以为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34605671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com