loading
본문 바로가기
RPA

[UIPATH] 텍스트를 줄바꿈 기준으로 리스트 생성하기

by 원쿤짱쿤 2023. 10. 27.
반응형

간혹 파일을 읽었을때 텍스트가 줄바꿈 기준으로 나뉘어 있는 경우가 많다.

원하는 텍스트줄의 위치를 찾거나 구분하기 위해서는 줄바꿈 기준으로 텍스트를 나누고 새로운 리스트 변수에 넣으려고하는데 이럴때는 Linq 쿼리 문으로 간단하게 처리 가능하다.

 

 

1.예제 파일은 아래와같다

2. 파일을 읽어주기 위해서 Read Text File 액티비티를 사용한다.(출력 : Temp)

 

3. 파일의 내용을 줄바꿈 기준으로 리스트화 한다. (result 유형 : list ) 
-> 아래에 부연설명 있음.

 

4.for Each를 통해 해당 리스트의 요소들을 하나씩 출력해본다.

5. 결과값

 

6. 최종

 

<Linq 쿼리문 부연설명> 

텍스트를 줄바꿈 기준으로 리스트를 생성해주며 공백을 제거해주는 Linq 쿼리문이다. 하나씩 해석해보자

 

코드

Temp.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries).Select(Function(line) line.Trim()).ToList()

 

결과

 

해석

1. .Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries)

-> 이 부분은 입력된 텍스트를 새 줄 (라인) 별로 나누는 작업을 수행합니다.

Environment.NewLine:

-> 이것은 시스템에서 사용하는 줄 바꿈 문자열입니다. Windows에서는 "\r\n"을 나타내며, Unix/Linux에서는 "\n"을 나타냅니다. 이것은 각 플랫폼에서 적절한 줄 바꿈 문자열을 사용한다는 것을 보장합니다.

StringSplitOptions.RemoveEmptyEntries:

-> 이 옵션은 빈 문자열(공백 또는 공백 문자만 포함된 문자열)을 나누는 과정에서 제거하는 역할을 합니다. 이 옵션이 없으면, 텍스트에 빈 줄이 있을 경우 빈 문자열을 포함한 항목이 리스트에 추가됩니다. 하지만 StringSplitOptions.RemoveEmptyEntries 옵션이 적용되면 빈 문자열이 포함된 항목은 리스트에 추가되지 않습니다.

 

결과적으로 
Temp.Split({Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries) 코드는 Temp  변수에 저장된 텍스트를 시스템의 줄 바꿈 문자열을 기준으로 나누고, 빈 줄은 리스트에 포함시키지 않고 나누어진 각 줄을 리스트의 항목으로 저장합니다.

 

2. .Select(Function(line) line.Trim())

-> .Select(...): 이 부분은 각 줄에 대해 특정 동작(여기서는 line.Trim())을 적용할 때 사용됩니다. 여기서는 각 줄의 양쪽 공백을 제거하는 Trim() 함수를 적용합니다.

 

3. .ToList()

-> .ToList(): 이 부분은 LINQ 쿼리의 결과를 리스트로 변환합니다. 이렇게 하면 여러 줄의 텍스트가 저장된 리스트가 만들어집니다.

 

최종적으로 전체 코드는 Temp 변수에 저장된 여러 줄의 텍스트를 각각 나누고 양쪽 공백을 제거한 후, 이를 리스트로 저장하는 작업을 수행합니다. 결과적으로 result 변수에는 각 줄의 텍스트가 저장된 리스트가 할당된다.

 

 

다른방법

 

코드

New List(Of String) (Split(Temp, vbNewLine).AsEnumerable().Select(function(x) x.TrimEnd))

결과

 

해석

Split(Temp, vbNewLine)

-> Temp라는 문자열을 vbNewLine 상수(새 줄을 나타내는 특수 문자열)를 기준으로 분할합니다. 이로써 Temp 문자열은 여러 줄로 나눠집니다.
.AsEnumerable()

-> 분할된 문자열 배열을 LINQ 쿼리나 확장 메서드를 사용하기 위해 IEnumerable<string>으로 변환합니다.
.Select(Function(x) x.TrimEnd)

-> 각 줄의 양 끝에 있는 공백을 제거하기 위해 Select 메서드를 사용합니다. x.TrimEnd는 각 줄의 양 끝에 있는 공백을 제거한 문자열을 반환합니다.
New List(Of String)

-> LINQ 쿼리의 결과를 기반으로 새로운 List(Of String) 인스턴스를 생성합니다. 이 리스트에는 각 라인이 나누어져 있고 양쪽 공백이 제거된 문자열이 포함됩니다.

결과적으로 이 코드는 Temp 변수에 저장된 텍스트를 줄 단위로 나눈 후 각 줄의 양쪽 공백을 제거하고, 그 결과를 포함하는 List(Of String) 객체를 생성합니다.

 

해당 방법은 중간에  빈 문자열(공백만 포함된 문자열)을 제거