UiPath Level 1-Lesson 3. Data Manipulation


學習大綱

  • 如何拆分字符串
  • 如何改變部分字符串的格式
  • 如何在表格中根據條件選中特定的行

 

1. 標量型變量,集合,表格

活動的屬性都有預定義的數據類型。鼠標懸停在屬性面板的某個屬性上,就會出現相應的提示。

  • 使用右鍵菜單或Ctrl+K在屬性欄創建的變量,會直接設置為屬性預定義的類型。

  • 標量型變量 (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加數組的部分可以省略。

  • 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個元素的數組,如下圖所示:

    • 將光標停在.Split()的括號中間,同時按下Ctrl+Shift+Space,會顯示Split的更多使用方法和相關的參數信息,上下鍵可以翻頁。
    • 分隔符可以是一個字符串,可以不止有一個。message.Split({"Record ", " has"},StringSplitOptions.None)可以得到下圖所示的數組:

    • 注意:{"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以外的方法。
  • 詳情參考
方法 語法示例 運行結果
Contains filePath.Contains(".") True
EndsWith/StartsWith filePath.EndsWith(".txt") True
Format String.Format(filePath,itemID) "Downloads/ASD123/output.txt"
Replace filePath.Replace("/","\") "Downloads\{0}\output.txt"
Split filePath.Split("/".ToCharArray) {"Downloads", "{0}", "output.txt"}
Substring filePath.Substring(10) "{0}\output.txt"
ToLower/ToUpper filePath.ToUpper "DOWNLOADS/{0}/OUTPUT.TXT"
Trim random.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屬性是被勾選的狀態。
      • 如果需要讀取的文件存放在項目文件夾下,則可以直接輸入文件名,而不需要完整的文件路徑
    • 新建一個變量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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM