출처 : UiPath Academy
Strings
String은 텍스트에 해당하는 데이터 유형이다. 문자열 사용이 포함되지 않는 자동화 시나리오는 상상하기 어렵다.
캡처, 처리, 응용프로그램 간 전송 또는 표시되어야 할 때마다 문자열이 유용하다.(데이터가 테이블처럼 구조화되지 않은 경우)
- 작업 상태 가져오기
- 더 큰 텍스트 부분에서 관련된 조각 추출
- 인간 사용자에게 정보 표시
String Methods
String 조작은 VB.Net에서 빌린 String Method를 사용하여 이루어진다.
다음은 RPA에서 가장 일반적으로 사용되는 몇 가지 방법이다.
Concat | 두 개의 지정된 객체의 문자열 표현 Expression : String.Concat (VarName1, VarName2) |
Contains | 지정된 하위 문자열이 문자열 내에서 발생하는지 확인. True or False 반환 Expression : VarName.Contains ("text") |
Format | 객체값을 문자열로 변환(다른 텍스트에 삽입) Expression : String.Format("{0} is {1}", VarName1, VarName2) |
IndexOf | 문자열에서 Character가 처음 나타나는 zero-based Index를 반환 Expression : VarName1.IndexOf("a") |
Join | 컬렉션의 요소를 연결하고 문자열로 표시 Expression : String.Join("l", CollVarName1) |
Replace | 문자열에서 하위 문자열의 모든 항목 변경하기 Expression : VarName.Replace("original", "replaced") |
Split | 지정된 구분 기호를 사용하여 문자열을 하위 문자열로 분할 Expression : VarName.Split("l"c)(Index) |
Substring | 시작 인덱스 및 길이를 사용하여 문자열에서 하위문자열을 추출 Expression : VarName1.Substring(StartIndex, length) |
Strings 예제
MISSION : String Method를 사용하여 특정 텍스트 조각을 추출하여 다른 형식으로 표시.
[참고]
- LastIndexOf : 이 인스턴스에서 마지막으로 발견되는 지정된 유니코드 문자 또는 문자열의 0부터 시작하는 인덱스 위치를 보고한다. 이 인스턴스에 해당 문자나 문자열이 없으면 이 메서드는 -1을 반환한다.
- Value - String : 검색할 문자열.
- StartIndex - Int32 : 검색을 시작 할 위치. StartIndex에서 이 인스턴스의 시작부분을 향해 검색이 진행된다.
- ComparisonType - String Comparison : 검색 규칙을 지정하는 열거형 값 중 하나.
- vbCR : 줄바꿈
1.1 Available Bookstores (Sequence)
Private = False
Variables
message(String)
author(String)
bookstores(List<String>)
outputString(String)
Activities
1.22 Assign initial message (Assign)
To = message
Value = "You searched for author Mark Twain. His books can be found in the following stores: Bookland,Classics bookstore."
Private = False
1.16 Get author (Assign)
To = author
Value = message.Split("."c).First.ToString.Substring(message.LastIndexOf("author"))
Private = False
1.11 Get bookstore list (Assign)
To = bookstores
Value = message.Split("."c)(1).ToString.Split(":"c).Last.ToString.Split(","c).ToList
Private = False
1.5 Assign output string (Assign)
To = outputString
Value = String.Format("Availability for {0}: {1}", author ,String.Join(";"+vbCr,bookstores))
Private = False
1.2 Log Message (LogMessage)
Message = outputString
Level = Info
Private = False
OUTPUT
Bookstores execution started
Availability for author Mark Twain: Bookland;
Classics bookstore
Bookstores execution ended in: 00:00:01
Lists
Lists(or List<T>)은 동일한 데이터 유형(ex. String or Integer)의 개체로 구성된 데이터 구조이다. 각각의 Object는 List에서 고정된 위치를 가지고 있기 때문에 Index로 접근할 수 있다. Array는 여러 Object를 저장하기 위한 고정된 크기의 구조인 반면, List는 항목을 추가, 삽입 및 제거를 할 수 있다.
List는 이름, 숫자, 시간좌표 및 기타 많은 수의 요소들을 저장할 수 있다.
List는 다음과 같은 구체적인 조작 방법을 제공한다.
- 항목 추가 및 제거
- 요소 검색
- 항목 반복 (각 항목에 대한 특정 작업 수행)
- Objects 정렬
- 항목을 추출하여 다른 데이터 유형으로 변환
Lists를 가장 많이 접하게 될 비즈니스 시나리오는 무엇인가?
- 프로젝트 팀 구성원의 컴퓨터 이름을 만들어야 하는 특정 구성에 대해 저장
- 특정 기준을 충족하는 송장 수 수집 및 저장
- 특정 이슈, 일정 기간 동안 만들어진 티켓 번호 추적
Collection에 사용되는 UiPath Methods
Lists Manipulating은 .Net Methods 또는 UiPath에서 제공하는 Collection Methods를 사용하여 수행할 수 있다.
Add to Collection | 특정 Collection에 항목 추가. 그것은 List.Add()와 동일하다. 예를 들어, 회사 이름 목록에 새 이름을 추가하는데 사용할 수 있다. |
Removed from Collection | 특정 Collection에서 항목을 제거하고, 작업 성공을 확인하는 Boolean 변수를 출력할 수 있다. 예를 들어, 이 활동은 처리할 송장 목록에서 송장번호를 제거하는 데 사용할 수 있다. |
Exists in Collection | 결과로 Boolean 값을 출력하여 지정된 Collection에 지정된 항목이 있는지 여부를 표시한다. 이 활동을 통해 고객 목록에 특정 이름이 포함되어 있는지 확인할 수 있다. |
Clear Collection | 모든 항목의 지정된 Collection을 지운다. 한 가지 가능한 사용법은 다시 채우는 프로세스의 새로운 단계를 시작하기 전에 Collection을 비우는 것이다. |
List 예제 - Working with Lists
MISSION : List를 병합하고 정렬하는 방법과 List 내의 문자열 개체를 동일하게 보이도록 형식을 지정할 수 있는 방법
[참고]
- Enumerable Class : IEnumerable<T>을 구현하는 개체를 쿼리하기 위한 static(Visual Basic의 경우 Shared) 메서드 집합을 제공한다.
- Enumerable.Concat<TSource>(IEnumerable<TSource>, IEnumerable<TSource>) Method : 두 시퀀스를 연결한다.
- Enumerable.AsEnumerable<TSource>(IEnumerable<TSource>) Method : IEnumerable<T>로 형식화 된 입력을 반환한다.
- Strings.StrConv(String, VbStrConv, Int32) Method : 지정 된 대로 변환 된 문자열을 반환 한다.
- Str - String : 필수사항이다. 변환할 String식이다.
- Conversion - VbStrConv : 필수사항이다. VbStrConv 멤버이다. 수행할 변환 형식을 지정하는 열거형 값이다.
- LocalID - Int32 : (선택사항) 시스템의 LocalID값과 다른 경우의 LocalID값이다. 기본값은 시스템의 LocalID값이다.
- Return - String : 지정된 대로 변환된 문자열이다.
- Exception : 지원되지 않는 LocalID, Conversion < 0 또는, > 2048 또는 지정된 로캘에 대해 지원되지 않는 변환.
- ProperCase : 문자열에 포함된 모든 단어의 첫 글자를 대문자로 변환한다. 이 멤버는 Visual Basic 상수 vbProperCase에 해당한다.
1.1 Demo (Sequence)
Private = False
Variables
SpainCities(List<String>) /* Default > new List (of String) from {"MADRID","valencia","BARCELONA"} */
UKCities(List<String>) /* Default > new List (of String) */
AllCities(List<String>) /* List of city names before format */
AllCitiesProperCase(List<String>) /* Default > new List (of String) */
Activities
1.35 Add London to UKCities (AddToCollection<String>)
Collection = UKCities
Item = London
Private = False
TypeArgument = System.String
1.31 Add Manchester to UKCities (AddToCollection<String>)
Collection = UKCities
Item = manchester
Private = False
TypeArgument = System.String
1.25 List Merge (Assign)
To = AllCities
Value = Enumerable.Concat(SpainCities.AsEnumerable,UKCities.AsEnumerable).ToList
Private = False
1.22 Invoke SORT Method (InvokeMethod)
MethodName = Sort
TargetObject = AllCities
RunAsynchronously = False
Private = False
1.8 For Each City (ForEach<String>)
Values = AllCities
Private = False
TypeArgument = System.String
Body
1.9 Body (Sequence)
Private = False
Activities
1.15 Assign ProperCase (Assign)
To = item
Value = StrConv(item, VbStrConv.ProperCase)
Private = False
1.10 Add To Collection (AddToCollection<String>)
Collection = AllCitiesProperCase
Item = item
Private = False
TypeArgument = System.String
1.5 Write Line AllCitiesProperCase (WriteLine)
Text = String.Join(",",AllCitiesProperCase)
Private = False
OUTPUT
CitiesDemo execution started
Barcelona,London,Madrid,Manchester,Valencia
CitiesDemo execution ended in: 00:00:01
Dictionaries
Dictionaries (또는 Dictionary <TKey, TValue>)은 키가 고유 한 (키, 값) 쌍의 모음이다. 휴대전화에서 각 이름에 해당하는 데이터 (전화번호, 이메일)가 있는 주소록을 생각해보자.
변수가 인스턴스화 될 때 키와 값 모두에 대한 데이터 유형을 선택해야 한다. Dictionaries의 데이터 유형은 지원되는 변수 중 하나 일 수 있다. (예 : Dictionary 포함)
Dictionary와 가장 자주 관련이 있는 작업은 다음과 같다.
- (키, 값) 쌍 추가 및 삭제
- 키와 관련된 값 검색
- 기존 키에 새 값을 다시 할당
Dictionary가 가장 많이 발생하는 비즈니스 시나리오는 무엇일까?
- 프로세스 전체에서 액세스 해야 하는 구성 세부사항 또는 기타 정보 저장
- 직책 또는 직원의 기타 관련 정보 저장
- 공급 업체의 은행 계좌 저장
Methods for working with Dictionaries
Initialization | Lists의 예와 같이 목록을 초기화해야 한다. 다음 예에서는 초기화가 'Assign' Activity 내에서 수행된다. 그러나 List 챕터에서 기억하듯 변수 패널에서 수행할 수 있다. |
Adding | VarName.Add(Key, Value) - 기존 Dictionary에 항목을 추가한다. 추가는 값을 리턴하지 않으므로, Invoke Code Activity를 사용한다. |
Removing | VarName.Remove(Key) - Dictionary에서 항목을 제거한다. 'Assign' Activity에서 사용한다. |
Retrieving | VarName.Item(Key) - Key로 Dictionary의 항목을 반환한다. VarName.Count - Dictionary 항목의 수를 Int32 값으로 반환한다. VarName.ContainsKey(Key) - 주어진 Key를 가진 항목이 Dictionary에 있는지 확인하고 Boolean 결과를 반환한다. VarName.TryGetValue(Key, Value) - 주어진 Key를 가진 항목이 Dictionary에 있는지 확인하고 Boolean 결과와 발견된 경우 값을 함께 리턴한다. |
DEMO - Dictionaries
MISSION : 이 데모는 사전을 만들고 사람들의 이름과 생일을 저장한다. 그 다음 각 개인에 대해 다음 정보를 인쇄한다.
- 사람이름
- 올해 생일이 지났는지 여부
- 올해 생일의 요일
[참고]
- DateTime.Parse(String) : 현재 스래드 문화권의 규칙을 사용하여 날짜 및 시간의 문자열 표현을 해당 DateTime으로 변환한다.
- DateTime.Today : 현재 날짜를 가져온다.
- DateTime.DayOfWeek : 이 인스턴스가 나타내는 주의 일수를 가져온다.
- Sunday - 0 - 일요일 / Monday - 1 - 월요일 / Tuesday - 2 - 화요일 / Wednesday - 3 - 수요일 / Thursday - 4 - 목요일 / Friday - 5 - 금요일 / Saturday - 6 - 토요일
1.1 Dictionary Demo (Sequence)
Private = False
Variables
birthDates(Dictionary<String,String>)
dateCurrent(DateTime)
Activities
1.35 Add values to dictionary (Sequence)
Private = False
Activities
1.44 Add Jamie Hanks (Assign)
To = birthDates("Jamie Hanks")
Value = 09/12/1991
Private = False
1.40 Add Willie Garner (Assign)
To = birthDates("Willie Garner")
Value = 04/01/1981
Private = False
1.36 Add Patricia Shaw (Assign)
To = birthDates("Patricia Shaw")
Value = 05/08/1994
Private = False
1.3 For Each (ForEach<String>)
Values = birthDates.Keys
Private = False
TypeArgument = System.String
Body
1.4 Body (Sequence)
Private = False
Variables
currentYearAnniversary(DateTime)
birthdayWeekday(String)
Activities
1.27 Convert to Date (Assign)
To = dateCurrent
Value = DateTime.Parse(birthDates(item))
Private = False
1.21 Assign current year anniversary (Assign)
To = currentYearAnniversary
Value = new DateTime(DateTime.Today.Year, dateCurrent.Month, dateCurrent.Day)
Private = False
1.16 Assign day of week (Assign)
To = birthdayWeekday
Value = currentYearAnniversary.DayOfWeek.ToString
Private = False
1.5 If anniversary is in the past (If)
Condition = currentYearAnniversary < DateTime.Today
Private = False
Then
1.12 Log Message (LogMessage)
Message = String.Format("Current year anniversary for {0} has passed. It was on a {1}.",item,birthdayWeekday)
Level = Info
Private = False
Else
1.8 Log Message (LogMessage)
Message = String.Format("Current year anniversary for {0} did not pass. It will be on a {1}.",item,birthdayWeekday)
Level = Info
Private = False
OUTPUT
BirthdayDictionary execution started
Current year anniversary for Jamie Hanks did not pass. It will be on a Saturday.
Current year anniversary for Willie Garner has passed. It was on a Wednesday.
Current year anniversary for Patricia Shaw has passed. It was on a Friday.
BirthdayDictionary execution ended in: 00:00:01
DEMO - Dictionaries & Lists
MISSION : 이 데모에서는 String and List of Strings 데이터 유형으로 사전을 작성하고 조작을 수행하는 방법을 살펴본다.
1.1 Dictionary Demo 2 (Sequence)
Private = False
Variables
cities(Dictionary<String,List<String>>)
Activities
1.24 New dictionary (Assign)
To = cities
Value = new Dictionary(of String, List(Of String))
Private = False
1.20 Assign US (Assign)
To = cities("US")
Value = new List(of String) from {"New York", "Chicago", "Seattle","San Francisco"}
Private = False
1.16 Assign UK (Assign)
To = cities("UK")
Value = new List(of String) from {"London", "Manchester", "Bristol","Edinburgh"}
Private = False
1.12 Add To Collection (AddToCollection<String>)
Collection = cities("US")
Item = Portland
Private = False
TypeArgument = System.String
1.8 Remove From Collection (RemoveFromCollection<String>)
Collection = cities("UK")
Item = London
ResultType = System.Boolean
Private = False
TypeArgument = System.String
1.5 Log Message US (LogMessage)
Message = "US Cities : "+ String.Join(", ",cities("US"))
Level = Info
Private = False
1.2 Log Message UK (LogMessage)
Message = "UK Cities : "+ String.Join(", ",cities("UK"))
Level = Info
Private = False
OUTPUT
Cities execution started
US Cities : New York, Chicago, Seattle, San Francisco, Portland
UK Cities : Manchester, Bristol, Edinburgh
Cities execution ended in: 00:00:01
RegEx Builder
정규식(REGEX or regexp)은 텍스트를 쉽게 일치시키고, 찾고, 관리하는 데 사용할 수 있는 특정 검색 패턴이다.
그러나 RegEx식을 만드는 것은 어려울 수 있다.
UiPath Studio에는 정규식 작성을 단순화 하는 RegEx 빌더가 포함되어 있다.
RegEx의 일반적인 용도는 다음과 같다.
- 입력검증
- 문자열 Parsing
- 데이터 스크래핑
- 문자열 조작
RegEx를 사용할 비즈니스 시나리오는 무엇일까?
다음과 같은 특정 패턴을 따르는 텍스트 조각을 검색한다.
1. 특정 숫자로 시작되는 전화번호를 추출하는 단계
2. 특정 패턴을 따르지 않더라도 일괄 텍스트에서 모든 거리 이름을 수집한다. 일부는 "Street" 또는 "Rd."등을 포함한다.
정규 String Method를 사용하여 동일한 표현식을 작성하는데 더 오래걸린다. 예를 들어 RegEx에는 문자열에서 모든 URL을 찾기위해 사전 정의 된 표현식이 있다.
Matches | 모든 발생에 대해 입력 문자열을 검색하고 모든 성공한 일치를 반환한다. |
IsMatch | 지정된 정규식이 지정된 입력 문자열에서 일치하는 것을 찾을 지 여부를 나타낸다. |
Replace | 정규식 패턴과 일치하는 문자열을 지정된 대체 문자열로 바꾼다. |
DEMO - RegEx
MISSION : 이 데모에서는 RegEx를 사용하여 여러 주소를 포함하는 문자열에서 모든 거리 이름과 숫자를 찾는다.
[참고]
IEnumerable<Match>
- IEnumerable : 제네릭이 아닌 컬렉션에서 단순하게 반복할 수 있도록 지원하는 열거자를 노출한다.
- IEnumerable<T> : 지정된 형식의 컬렉션에서 단순하게 반복할 수 있도록 지원하는 열거자를 표시한다. 여기서 <T>는 열거할 개체의 형식이다.
Regex Option - IgnoreCase : 검색이 대소문자를 구분하지 않도록 지정한다.
1.1 Find Street Names (Sequence)
Private = False
Variables
addresses(String)
foundStreets(IEnumerable<Match>)
Activities
1.15 Assign Address (Assign)
To = addresses
Value = "275 S Wall St., Wilmington, OH, 45177 - Virginia USA, 1223 Pamela St., Leesburg, FL, 34748 - 1022 Lincoln Ave, Duquesne, PA, 15110 - US, 1295 N Opdyke Rd, Auburn Hills, MI, 48326 - 19 Orbit Dr, Enfield, CT, 06082 "
Private = False
1.9 Matches Street Name (Matches)
Pattern = \b\d{1,8}(-)?[a-z]?\W[a-z|\W|\.]{1,}\W(road|drive|avenue|boulevard|circle|street|lane|way|rd\.|st\.|dr\.|ave\.|blvd\.|cir\.|ln\.|rd|dr|ave|blvd|cir|ln)
Input = addresses
RegexOption = IgnoreCase
Result = foundStreets
ResultType = System.Collections.Generic.IEnumerable`1[System.Text.RegularExpressions.Match]
Private = False
1.2 For Each Match (ForEach<Match>)
Values = foundStreets
Private = False
TypeArgument = System.Text.RegularExpressions.Match
Body
1.3 Body (Sequence)
Private = False
Activities
1.4 Log Message (LogMessage)
Message = item
Level = Info
Private = False
OUTPUT
Cities execution started
275 S Wall St.
1223 Pamela St.
1022 Lincoln Ave
1295 N Opdyke Rd
19 Orbit Dr
Cities execution ended in: 00:00:01
'UiPath > UiPath 공부' 카테고리의 다른 글
Excel and DataTables : DataTable Activities (0) | 2020.07.17 |
---|---|
Excel and DataTables (0) | 2020.07.17 |
Control Flow (0) | 2020.06.11 |
Data Types - 데이터 타입에 대해 알아보자. (0) | 2020.06.09 |
Variables & Arguments - '변수'와 '인수'에 대해 알아보자. (0) | 2020.06.09 |
댓글