UiPath Level 1-Lesson 3. Data Manipulation

摘要:
您可以使用字典从Orchestrator队列中提取数据。定义默认值的语法是:newList from{“Value1”,“Value2”}。使用ForEach时,属性面板中的TypeArgument必须设置为与Array或List元素相同的类型。使用空格作为分隔符拆分变量消息,然后写入消息。拆分(“”c)。消息拆分可以得到下图所示的数组:注意:{“Record”,“has”},应在Record之后和has之前添加空格。Split方法的第二个参数StringSplitOptions。None,指定是否支持空元素。

学习大纲

  • 如何拆分字符串
  • 如何改变部分字符串的格式
  • 如何在表格中根据条件选中特定的行

1. 标量型变量,集合,表格

活动的属性都有预定义的数据类型。鼠标悬停在属性面板的某个属性上,就会出现相应的提示。

  • 使用右键菜单或Ctrl+K在属性栏创建的变量,会直接设置为属性预定义的类型。

UiPath Level 1-Lesson 3. Data Manipulation第1张

  • 标量型变量 (Scalar Variables):一个单独的固定类型的数据。
    • e.g. 字符 (Characters),布尔值,数字,日期和时间
  • 集合 (Collections):
    • Arrays, Lists, Queues
    • 特殊类型 - 字符串 (Strings):字符串可以看作多个字符的集合。
    • 特殊类型 - 字典 (Dictionaries):字典包含两个相互关联的集合:名称和值。字典通过名称而不是索引号来引用值。
      • 可以使用字典从Orchestrator队列中提取数据。
  • 表格 (Tables):将数据保存在二维的结构中,通过行和列来索引数据。

详细解析:

1) Generic Value:字符串型、布尔型、数字型、日期时间型。使用起来灵活方便,支持多种字符串方法。

2) Array和List

  • 元素的数量
    • Array:固定数量
    • List:可以通过添加或删除元素来增大或缩小
  • 定义方式
    • Array:在变量面板中选择数组元素的数据类型。定义默认值的语法为:{"Value1", "Value2"}。
    • List:在.NET数据类型中,搜索并选中List<T>,再选择数据类型。定义默认值的语法为:new List(of String) from {"Value1","Value2"}。必须重申数据类型 (of 数据类型),from加数组的部分可以省略。

UiPath Level 1-Lesson 3. Data Manipulation第2张

  • For Each活动:Array和List都适用。使用For Each时,必须把属性面板中的TypeArgument设置为与Array或List的元素一致的类型。
  • 添加删除元素:仅适用于List。使用Invoke Method活动,在TargetObject中填写List的变量名,在MethodName中填入Add,在属性面板中的Parameters属性里添加新元素,注意Type一定要与List本身的数据类型一致。

3) 字典 (Dictionaries)

  • 作用:
    • 提取Orchestrator队列中的数据
    • 将多个数据作为单个变量传递
  • 定义字典
    • 在.NET数据类型中,搜索并选中Dictionary<TKey, TValue>,在选择Key和Value的数据类型,一般Key是String型,Value是String型或对象。
    • 定义默认值:new Dictionary(of String, String) from {{"Key1","Value1"}, {"Key2","Value2"}}
  • 添加Key和Value
    • 加入一个Assign活动,等号左边是字典变量的名称(Name)和新的关键字(Key),等号右边是新的值(Value)。比如:config("Key3") = "Value3"。


2. 文本的拆分

  • 文本都要用引号括起来。如果要表示引号本身,需要输入两次引号。例如:"David says ""Hello"""显示为David says "Hello"。
  • Split方法:通过分隔符拆分文本,生成一个数组。数组的索引号从0开始
    • 将变量message(message="Operation ended successfully. Record 1234 has been created.") 以空格作为分隔符拆分,写作message.Split(" "c)。拆分后将得到一个拥有8个元素的数组,如下图所示:

UiPath Level 1-Lesson 3. Data Manipulation第3张

    • 将光标停在.Split()的括号中间,同时按下Ctrl+Shift+Space,会显示Split的更多使用方法和相关的参数信息,上下键可以翻页。
    • 分隔符可以是一个字符串,可以不止有一个。message.Split({"Record ", " has"},StringSplitOptions.None)可以得到下图所示的数组:

UiPath Level 1-Lesson 3. Data Manipulation第4张

UiPath Level 1-Lesson 3. Data Manipulation第5张

    • 注意:{"Record ", " has"}中,Record的后面和has的前面要加空格。
    • Split方法的第二个参数StringSplittOptions.None指定是否支持空元素。


3. 文本的组合

1) 连接文本

  • 连接字符串型的数据:直接使用加号连接,比如"This " + "that" = "This that"。
  • 连接混合类型的数据:先把非字符串型的数据转换成字符串型,再用加号连接。比如”This “ + myNumber.ToString + Now.ToString = "This 4210/17/2018 16:15:30"

2) String.Format方法:适用于更长的、更复杂的数据组合,并且允许自定义格式。

  • String.Format("Hello {0} {1}", myNumber, Now)
  • Hello是静态文本;{0}和{1}是占位符,表示引号右边的数据在整个字符串中显示的位置,从0开始索引。
  • 更改日期和时间的格式可以写作:String.Format("Hello {0} {1:MMMM yyyy}", myNumber, Now)

3) 常用的String方法:filePath = "Downloads/{0}/output.txt",itemID = "ASD123"

  • GenericValues也可以使用除了EndsWith,StartsWith和Format以外的方法。
  • 详情参考
方法语法示例运行结果
ContainsfilePath.Contains(".")True
EndsWith/StartsWithfilePath.EndsWith(".txt")True
FormatString.Format(filePath,itemID)"Downloads/ASD123/output.txt"
ReplacefilePath.Replace("/","")"Downloads{0}output.txt"
SplitfilePath.Split("/".ToCharArray){"Downloads", "{0}", "output.txt"}
SubstringfilePath.Substring(10)"{0}output.txt"
ToLower/ToUpperfilePath.ToUpper"DOWNLOADS/{0}/OUTPUT.TXT"
Trimrandom.Trim"ASD"

 

                      

 4) Data Tables

常见的数据表格有Excel文件CSV文件。CSV(Comma-Separated Values,逗号分隔值也称字符分隔值)文件以纯文本形式存储表格数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔。每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。

  • Read CSV活动:将CSV文件中的数据存入DataTable类型的变量中。勾选IncludeColumnNames,表示第一行是列标题。
  • Output Data Table活动:将DataTable型数据转换成字符串型,可以通过Message Box活动或Write Line活动显示该字符串。适合抓取数据或Debug。
  • For Each Row活动:在DataTable的每一行中循环。
  • 如果要取得某一列的数据,可以直接指定列标题。例如:在For Each Row活动中,row("Name").ToString将返回该DataTable的Name一列下所有的数据。
  • 如果要获得某一列某一行的数据,还要加上行号,行号从0开始且不计算标题行。例如:sampleData.Rows(0)("Name").ToString。
    • 可以指定列的索引号代替列标题,第一列的索引号是0。如果Name是第2列,可以写作sampleData.Rows(0)(1).ToString
  • Select方法:搜索整个DataTable的行,找到符合指定条件的行,并返回一个数组。
  • 实例:提取DataTable变量sampleData中年龄小于40且Income大于40k的行。
    • 将sampleData.Select("Age<40 and Income>'40k'")赋值给变量filteredRows。filteredRows的数据类型是DataRow[](数组)。
    • DataRow[]通过For Each活动循环:Foreach row in filteredRows。注意将TypeArgument的类型改为DataRow(不是数组)。
    • 在For Each活动中添加Write Line活动:row("Name").ToString + " " + row("Age").ToString + " " + row("Income").ToString。
    • 运行程序会在Output面板中写入符合条件的行的Name,Age和Income信息。

除了Select方法外,DataTable类型还有很多手写的方法。


4. 练习:为俱乐部成员设置昵称

  • 要求:为俱乐部成员取一个昵称,昵称由名字的前三个字母全大写和姓氏的前三个字母全小写组成,如Marcella Knipp的昵称为MARkni。
  • 源文件:CVS文件。第一行是列标题(First, Last, Club Number)。从第二行开始记录名字、姓氏、是否为俱乐部成员(Yes/No)。
  • 思路:
    • 添加Read CSV活动:读取源文件,赋值给一个DataTable类型的变量names。确保IncludeColumnNames属性是被勾选的状态。
    • UiPath Level 1-Lesson 3. Data Manipulation第6张
      • 如果需要读取的文件存放在项目文件夹下,则可以直接输入文件名,而不需要完整的文件路径
    • 新建一个变量clubMembers,变量类型选择Array of [T],元素类型选择Browse for Types...,搜索DataRow。这样就创建了一个DataRow的数组。
    • 添加Assign活动:To=clubMembers;Value=names.Select("[Club Member]= ‘Yes’ ")
      • 如果列标题包含空格,则要使用中括号[ ]将它括起来。
      • 文本内容要用单引号''括起来。
    • 添加For Each活动:修改为Foreach row in clubMembers,将TypeArgument属性设置为DataRow
    • 新建三个String型变量,firstNamelastNamenickName
    • 在For Each里添加两个Assign活动:firstName=row("First").ToString;lastName=row("Last").ToString
    • 生成nickName需要用到:Substring方法提取名和姓的前三个字母;ToUpper方法将前三个字母大写;ToLower方法将前三个字母小写;+号连接字符串。
    • 在For Each里添加Assign活动:nickName=firstName.Substring(0,3).ToUpper + lastName.Substring(0,3).ToLower
      • Substring(0,3)表示从第一个字符开始(Start Index),提取三个字符(Length)。
    • 在For Each里添加Wirte Line活动:Text=nickName。运行后在Output面板中会显示俱乐部成员的昵称。

*本课使用过的新活动、方法、函数等:

  • Invoke Method
  • Read CSV
  • Output Data Table
  • For Each Row
  • .Contains():根据文本中是否包含指定的字符串,返回True或False。
  • .Split()
  • String.Format()

免责声明:文章转载自《UiPath Level 1-Lesson 3. Data Manipulation》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇转!! Eclipse设定和修改文件字符编码格式和换行符[UE4]字体材质下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

基于Geomesa服务查询轨迹数据无法根据空间和时间范围进行结果查询

一、Geomesa - QuickStart(教程工程包) 百度网盘下载地址:geomesa-tutorials-master.7z 二、解压后,IDEA编译如下 百度网盘下载地址:IDEA2018破解版安装 三、根据日期范围查询 1 @Test 2 public void query() throwsException { 3 4...

C#编程总结(十)字符转码

C#编程总结(十)字符转码 为了适应某种特殊需要,字符需要根据规则进行转码,便于传输、展现以及其他操作等。 看看下面的转码,就知道他的用处了。 1、字符串转码 根据原编码格式与目标编码格式,完成转换。不过可能出现乱码哦。上一章已经介绍过了。 代码: /// <summary> /// 字符串编码转换...

JavaScript中unicode编码与String互转(三种方法)

1.引言 JS本身就支持unicode转string功能,一共有三种方式和String单个字符转unicode编码。 2.方法 //unicode转String 1. eval("'" + str + "'");//当str中有带分号'或者"时,会报错,此时改成eval('"' + str + '"')即可 2. (new Function("retu...

Dozer 使用小结

目录   概述  安装  使用  Dozer支持的数据类型转换  Dozer的映射配置  参考 这篇文章是本人在阅读Dozer官方文档(5.5.1版本,官网已经一年多没更新了)的过程中,整理下来我认为比较基础的应用场景。 本文中提到的例子应该能覆盖JavaBean映射的大部分场景,希望对你有所帮助。 概述 Dozer是什么? Dozer是一个Jav...

Scala 面向对象(八):特质(接口) 一

1 Scala接口的介绍 从面向对象来看,接口并不属于面向对象的范畴,Scala是纯面向对象的语言,在Scala中,没有接口。 Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说,多个类具有相同的特征(特征)时,就可以将这个特质(特征)独立出来,采用关键字trait声明。 理解trait 等价于(interface + abstract...

MCGS触摸屏操作日志功能

  一, 问题描述实现操作日志功能,记录关键操作的当前操作人员以及对应操作内容和时间。 二, 构思过程昆仑通态HMI支持触发存盘功能,并且支持字符串等各类型变量的储存,对应在各关键操作按钮内设置好操作内容文本,将操作内容及当前用户储存下来即可,储存记录内默认自带时间戳。 三, 实现过程当前客户有这样一个工程:每次启动之后,用户登录之后才能对应进入操作界面;...