【UiPath2022+C#】UiPath 数据操作

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 数据操作是对数据进行修改、结构化、格式化或排序的过程,以方便使用数据并增强数据管理功能。

环境

UiPath Studio Community 2022.4.3

Windows

C#

概述

定义

数据操作是对数据进行修改、结构化、格式化或排序的过程,以方便使用数据并增强数据管理功能。

业务场景

  • 网站所有者经常采用数据操作方法从其 Web 服务器日志提取和查看特定信息。这样他们可以监控最受欢迎的页面及其流量来源。
  • 我们考虑查询公共财务或法律数据库的流程。数据操作可为信用分析师提供仅提取相关数据并在其他文档中使用这些数据,或将这些数据与其他来源的信息进行相关联的方法。

字符串

定义

字符串是与文本对应的数据类型。很难想象不涉及使用字符串的自动化场景。

每当需要捕获、处理、在应用程序之间发送或显示文本时,都会使用字符串(除非数据是结构化数据,例如表格)。

业务场景

  • 获取操作的状态
  • 从较大的文本部分提取相关文本
  • 向人类用户显示信息

字符串方法

Concat

以字符串形式连接两个指定对象

表达式:string.Concat(VarName1, VarName2)

Contains

检查字符串中是否出现指定子字符串。返回 True 或 False

表达式:VarName.Contains(“text”)

Format

将对象的值转换为字符串(并将其插入另一个文本中)

表达式:string.Format(“{0} is {1}”, VarName1, VarName2)

IndexOf

返回索引从零开始的字符串中第一次出现的字符

表达式:VarName1.IndexOf(“a”)

Join

连接集合中的元素,并将其显示为字符串

表达式:string.Join(“|”, CollVarName1)

Replace

替换字符串中出现的所有子字符串

表达式:VarName.Replace(“original”, “replaced”)

Split

使用给定分隔符将字符串拆分为子字符串

表达式:VarName.Split(“|“)(index)

Substring

使用字符串索引和长度从字符串提取子字符串

表达式:VarName1.Substring(startIndex, length)

字符串方法

步骤

  • 我们以“序列”开始该项目,并使用“分配”作为“message”字符串变量的初始值:“You searched for author Mark Twain. His books can be found in the following stores: Bookland, Classics bookstore.”
  • 我们创建一个新字符串变量 author,并使用一系列字符串方法从查询中分配作者:

    message.Split(new char[]{'.'})[0].ToString().Substring(message.LastIndexOf("author"))

    • v Split(new char[]{'.'})[0].ToString(),提取字符串的第一个句子并将其转换为字符串;
    • v Substring(message.LastIndexOf("author")),提取“author”后面的子字符串;
  • 我们创建一个新列表变量bookstores,并使用一系列字符串方法从查询中分配书店:

    message.Split(new Char[]{'.'})[1].ToString().Split(new char[]{':'}).Last().ToString().Split(new char[]{','}).ToList()

    • v message.Split(new Char[]{'.'})[1].ToString(),提取字符串的第二个句子并将其转换为字符串;
    • v Split(new char[]{':'}).Last().ToString(),拆分剩余字符串并仅保留其最后一部分;
    • v Split(new char[]{','}).ToList(),接受每个以逗号分隔的字符串,并将其添加为列表变量中的元素;
  • 我们创建一个新字符串变量以显示 2 个变量的值:string.Format("Availability for {0}: {1}", author ,string.Join(";",bookstores))。在此表达式中,string.Join 用于提取并显示“bookstores”列表变量中的每个元素。

字符串.png

结果

Availability for author Mark Twain: Bookland; Classics bookstore

列表

定义

列表(或列表 ,正如您将要遇到的那样)是由相同数据类型(例如字符串或整数)的对象组成的数据结构。每个对象在列表中都有一个固定的位置;因此,可以通过索引进行访问。数组是用于存储多个对象的固定大小的结构,而列表可以使我们添加、插入和删除项目。

列表可以存储大量元素 - 名称、数字、时间坐标等。列表可提供特定的操作方法,例如:

  • 添加和删除项目
  • 搜索元素
  • 遍历项目(并针对每个项目执行某些操作)
  • 对对象进行排序
  • 提取项目并将其转换为其他数据类型。

业务场景

  • 存储项目团队成员的计算机名称,以执行所需的特定配置
  • 收集和存储符合特定条件的发票数量
  • 追踪在某个时期内针对某个问题创建的票证编号;

步骤

  • 我们以序列作为项目的开始,并创建 2 个列表变量(“SpainCities”和“UKCities”)。
  • 由于必须实例化集合变量并填充值,因此使用 2 种不同的方法:

    • 对于“SpainCities”,使用 {"MADRID","valencia", "BARCELONA"} 的表达式“new List (of String)”实例化,并从“变量”面板填充列表。
    • 对于“UKCities”,从“变量”面板实例化列表,并使用“添加到集合”活动填充该列表。
  • 我们使用“分配”活动中的Uniont方法将 2 个列表变量合并到新创建的列表变量 (“AllCities”)中。我们使用表达式 SpainCities.Union(UKCities).ToList()。
  • 我们通过在“方法名称”字段中选择“排序”,使用“调用方法”活动对结果列表中的元素进行排序。
  • 我们使用“遍历循环”活动遍历“AllCities”变量中的元素,并:

    • 使用 ToUpper 方法将其转换为首字母大写:char.ToUpper(item.ToCharArray()[0]) + item.Substring(1);
    • 使用“添加到集合”将转换的项目添加到新创建的列表变量(“AllCitiesProperCase”).
  • 我们使用“写入行”活动显示使用 string.Join 方法:string.Join(",",AllCitiesProperCase.ToArray()) 转换的值。

流程总览和变量

列表1.png

流程总览

列表2.png

For Each

列表3.png

字典

定义

字典(或字典 <TKey, TValue>,正如您将要遇到的那样)是(键,值)对的集合,其中键是唯一的。试想一下手机中的通讯薄,其中每个名称都包含相应的数据(电话号码、电子邮件)。

实例化变量时,必须选择键和值的数据类型。字典中的数据类型可以是任何支持的变量(例如,包括字典)。

通常与字典相关联的操作:

  • 添加和删除(键,值)对
  • 检索与键相关联的值
  • 将新值重新分配给现有键

业务场景

  • 存储需要在整个流程中访问的配置详细信息或其他信息
  • 存储员工的职称或其他相关信息
  • 存储供应商的银行帐户

步骤

案例:

我们将创建一个字典,并存储人员的姓名及其生日。然后,我们将为每个人打印以下信息:

  • 人名;
  • 今年周年纪念日是否已过;

步骤:

  • 我们以序列作为项目开始,并创建一个 new Dictionary (String, String) 变量以存储姓名和出生日期(命名为“birthDates”);

    • 我们使用了 3 个“分配”活动将元素添加到字典变量:birthDates[“key”] = “value”。键为名称,值为日期 (yyyy/MM/dd);
  • 我们使用了“遍历循环”活动遍历字典的键:

    • 使用 DateTime.Parse(birthDates[item]) 方法将每个值转换为日期,并将其分配给刚创建的日期时间变量(“dateCurrent”);
    • 使用表达式 new DateTime(DateTime.Today.Year, dateCurrent.Month, dateCurrent.Day) 确定今年周年纪念日,并将其存储在新创建的日期时间变量(“curentYearAnniversary”)中;
    • 使用“IF 条件”活动以验证今年周年纪念日是否已通过条件“curentYearAnniversary.Month < dateCurrent.Month || (curentYearAnniversary.Month == dateCurrent.Month && curentYearAnniversary.Day < dateCurrent.Day)”:
    • 如果为 True,则使用“日志消息”活动打印此人的周年纪念日已经过去;
    • 如果为 False,则使用“日志消息”活动打印此人的周年纪念日将在未来。

流程总览和变量

字典1.png

For Each

字典2.png

字典和列表

  • 我们以序列作为项目开始,并实例化新创建的字典变量,并通过使用分配活动和以下表达式:cities = new Dictionary(string, List( string))
  • 我们使用了 2 个分配活动填充字典变量,将省的名称作为键,并将这些省的多个城市作为值;
  • 通过在属性面板的项目字段中写入城市名称,我们使用了“添加到集合”活动在与“浙江”键对应的值中添加新的城市名称(“台州”);
  • 我们使用了“从集合删除”活动从相应的值列表中删除城市名称(“泰州”)。为此,属性面板的项目字段中需插入了“伦敦”;
  • 我们使用了 2 个“日志消息”活动,以显示字典中与 2 个键对应的值。

字典和列表.png

字典和列表1.png

字典和列表2.png

正则表达式

定义

正则表达式(REGEX 或 regexp)是一种特定搜索模式,可用于轻松匹配、查找和管理文本。但是,创建正则表达式可能具有挑战性。

UiPath Studio 包含一个正则表达式构建器,可简化创建正则表达式。

正则表达式的典型用途包括:

  • 输入验证
  • 字符串解析
  • 数据抓取
  • 字符串操作

业务场景

检索遵循特定模式的文本片段,例如:

  • 提取以特定数字开头的电话号码;
  • 即使它们没有遵循特定的模式,也要从大量文本中收集所有街道名称-其中一些包含“街道”,而其他则包含“ 道路”等。

使用常规字符串方法构建同一表达式需要更长时间 – 例如,正则表达式包含预定义的表达式,用于查找字符串中的所有 URL。

“正则表达式”下拉菜单可提供多种预生成的正则表达式选项。可用选项包括:

  • Literal
  • Digit
  • One of
  • Not one of
  • Anything
  • Any word character
  • Whitespace
  • Starts with
  • Ends with
  • Advanced
  • Email
  • URL
  • US date
  • US phone number

您可以使用“量词”下拉菜单选择要为搜索词查找的结果数量。每种可能性都有多个选项,此下拉菜单旁的输入字段也会根据每个选项进行更改:

  • Exactly - 用于选择要查找的确切的连续出现次数。例如,如果要搜索的文本是“lorem”且“量词”设为“精确次数”2,则向导会在“测试文本”框中找到任何出现“loremlorem”的结果。
  • Any (0 or more) - 用于高亮显示连续找到的任意数量的匹配项,次数从 0 开始。
  • At least one (1 or more) - 用于高亮显示连续找到的任意数量的匹配项,次数从 1 开始。
  • Zero or one - 仅高亮显示连续出现一次的搜索词。
  • Between X and Y times - 用于高亮显示所选择的连续出现次数。例如,若搜索“ipsum”并选择“2 至 3 次之间”,则系统仅会高亮显示“ipsumipsum”和“ipsumipsumipsum”。

文档

正则表达式

相关实践学习
日志服务之数据清洗与入湖
本教程介绍如何使用日志服务接入NGINX模拟数据,通过数据加工对数据进行清洗并归档至OSS中进行存储。
相关文章
|
2月前
|
开发框架 .NET C#
C#数据去重的这几种方式,你知道几种?
C#数据去重的这几种方式,你知道几种?
|
2月前
|
C# 数据库
c# dev Form1 gridview1使用Form2 gridview1的数据
c# dev Form1 gridview1使用Form2 gridview1的数据
|
2月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
35 0
|
2月前
|
SQL 存储 开发框架
C# DataSet结合FlyTreeView显示树状模型数据
C# DataSet结合FlyTreeView显示树状模型数据
|
2月前
|
XML 存储 开发框架
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
c#教你网站数据轻松解析抓取,HtmlAgilityPack解析的奇妙之处
52 0
|
2月前
|
数据采集 存储 C#
抓取Instagram数据:Fizzler库带您进入C#程序的世界
在当今数字化的世界中,数据是无价之宝。社交媒体平台如Instagram成为了用户分享照片、视频和故事的热门场所。作为开发人员,我们可以利用爬虫技术来抓取这些平台上的数据,进行分析、挖掘和应用。本文将介绍如何使用C#编写一个简单的Instagram爬虫程序,使用Fizzler库来解析HTML页面,同时利用代理IP技术提高采集效率。
抓取Instagram数据:Fizzler库带您进入C#程序的世界
|
2月前
|
SQL C# 数据库
C# 读取多条数据记录导出到 Word 标签模板
C# 读取多条数据记录导出到 Word 标签模板
|
2月前
|
安全 数据处理 C#
C# Post数据或文件到指定的服务器进行接收
C# Post数据或文件到指定的服务器进行接收
|
2月前
|
存储 安全 C#
C#使用集合组织相关数据
C#使用集合组织相关数据