【问题标题】:How to parse strings with different variables in each string?如何解析每个字符串中具有不同变量的字符串?
【发布时间】:2015-03-20 18:05:03
【问题描述】:

我有一个字符串文件,例如:

“第 1 行:Location=1922&JobType=11&JobName=3719&SkillLevel:isnull=true&JobStatus=0”

“第 2 行:OffenderId=1447983&Location=0&OrderBy=”

“第 3 行:用户=tnu11607&Agency=767&ReportYear=2015&ReportMonth=2”

根据运行的 200 多个报告中的哪一个,存在多种模式,但每个报告的参数可能不同。

我想将其解析为:

 ParamLocation  ParamOffender  ParamOrderBy  ParamUser  ...
  1. 1922 --- --- --- ...

  2. --- 1447983 NULL --- ...

  3. --- --- --- tnu11607 ...

(很难让间距充分显示)

等等。

我什至不确定如何开始。任何建议将不胜感激。我会在周末看看这个。

【问题讨论】:

    标签: string parsing variables text ssis


    【解决方案1】:

    尝试深入研究正则表达式,在 SSIS 中,您可以使用脚本任务。在 answers from this SO post 上绘图,您可以使用类似以下的内容,并且可以使用 LINQPad 或 Visual Studio 来查看它的实际效果。

    string queryString = "Row 1: Location=1922&JobType=11&JobName=3719&SkillLevel:isnull=true&JobStatus=0";
    Dictionary<string, string> matches = Regex.Matches(queryString, "@"(\w+:?\w*)(=(\w+))&?"").Cast<Match>().ToDictionary(x => x.Groups[1].Value, x => x.Groups[3].Value);
    Console.WriteLine(matches["Location"]);
    

    要在 SSIS 中按行自动执行此操作,只需将 queryString 变量设为行文本即可。

    【讨论】:

    • 太棒了!我一直在寻找研究正则表达式的借口。当我有时间探索时,我会告诉你的。谢谢。
    • 我的正则表达式相当弱,所以我更新了答案。您可以查看thisthis 等在线工具,以直观地查看正则表达式所指示的模式。
    猜你喜欢
    • 2017-04-02
    • 2011-05-15
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 2017-11-20
    • 2011-04-11
    相关资源
    最近更新 更多