About Split Method result

안녕하세요, split 사용하다가 궁금한 게 있어서 질문 올립니다

str = “memo1\r\nsaram2\r\ncow3” 를 \r\n 기준으로 split 했습니다.

제가 예상했던 결과값 : [memo1, saram2, cow3]
실제 값 : [saram2, memo1, cow3]

왜 [saram2, memo1, cow3]으로 나오는 지 모르겠습니다.

참고로 split(Envoronment.newLine), split(vbCrlf) 쓰면 [saram2, memo1, cow3]으로 나왔습니다.

Hey

Does this link help?

소스를 한번 봐야 알 것 같은데요…만약 str에서의 \n이 개행문자라면
스플릿을 str.Split(new String() {Environment.NewLine}, StringSplitOptions.None ).ToArray
이런식으로 사용하셔야 합니다

\n\r이 줄바꿈 개행문자입니다. 그리고 @JungJaeYeop 님이 답변해주신 내용대로 했는데도 순서가 바뀌어서 나오네요 ㅠㅠ

혹시나 해서 드리는 말씀인데…이게 출력쪽에서 쓰다보면 순서가 바뀌어서 나올때가 있긴 하거든요…
혹시 데이터 앞쪽에다가 index 붙여서 출력해보시겠어요?

해당 부분은 여기있습니다.


#directoryNames value contains a result of screen scraping
#directoryNames type is 'GenericValue'
directoryNames = directoryNames.ToString
directoryNames = directoryNames.Replace(vbTab, "")
directoryArray = directoryNames.Split(vbCrlf)
directoryList = directoryArray.toList

간단하게 설명하자면 directoryNames 변수에서 \t(tab key)를 제거하고 \r\n(enter key)를 기준으로 나누고 싶습니다.

directoryNames 변수가 너무 길어서 예시로 하나 들겠습니다.

directoryNames = "
(apple)   
    (banana)
        (cow)
        (drink)"

directoryNames를 log에 띄우면 다음과 같습니다.

directoryNames = 
"
(apple)\r\n\t(banana)\r\n\t\t(cow)\r\n\t\t(drink)
"

현재 directoryNames = directoryNames.Replace(vbTab, "") 까지 제대로 실행됩니다. 하지만 directoryArray = directoryNames.Split(vbCrlf) 결과는 잘 나오지만 순서가 뒤바뀌어서 나옵니다.

index는 어느 변수에 붙이라는 말씀인가요? 잘 이해가 안됐습니다 ㅠㅠ

Lisr 출력하실때 for each 로 출력하시면 속성 패널에 index 를 출력받아서 사용할 수 있는 부분이 있습니다.

그래서 그 부분에 변수를 주고 write Line 같은 액티비티에 item을 같이 적어주면 index랑 item이랑 같이 나와서 순서가 제대로 찍히고 있는건지 확인할수 있습니다

혹시 이런식으로 출력했을때도 순서가 바뀌어 있으면 다시 답글 달아주시면 감사하겠습니다~

안녕하세요, 때로는 로그에 무언가를 출력하면 결과의 잘못된 순서를 제공합니다.

데이터 테이블에 인쇄하거나 메시지 상자를 사용하는 것이 좋습니다.

때때로 “inorder” 결과를 제공하지 않기 때문에 로그 활동을 사용하지 마십시오.

문안 인사
아마드
문법 죄송합니다, 번역기를 사용하고 있습니다
annyeonghaseyo, ttaeloneun logeue mueongaleul chullyeoghamyeon gyeolgwaui jalmosdoen sunseoleul jegonghabnida.

deiteo teibeul-e inswaehageona mesiji sangjaleul sayonghaneun geos-i johseubnida.

ttaettaelo “inorder” gyeolgwaleul jegonghaji anhgi ttaemun-e logeu hwaldong-eul sayonghaji masibsio.

mun-an insa
amadeu
munbeob joesonghabnida, beon-yeoggileul sayonghago issseubnida

1 Like

@JungJaeYeop 님! foreach으로 log 대신 write line 문으로 찍었더니 맞는 결과가 나왔습니다! 아마 @Ahmad_Rais 님이 말씀하신 것처럼 log가 잘못된 순서로 찍힌 것으로 추정됩니다.

덕분에 c#처럼 foreach문에 변수 지정해서 index 다는 법 알게 되었네요! C# 하다가 UIpath 하려니까 되게 헷갈리는 게 많네요.

제 질문에 답변해주시기 위해 @JungJaeYeop 님이 도와주신 점, 다시 한 번 감사드립니다!

1 Like

도움이 되어서 기쁩니다!
계속 최선을 다해,

각각에 대해 색인을 설정하면 나중에 여러 디버깅에 많은 도움이 됩니다.

해결하는 데 도움이 되는 항목이 있으면 "해결 방법으로 표시"하십시오.

문안 인사
아마드
doum-i doeeoseo gippeubnida!
gyesog choeseon-eul dahae,

gaggag-e daehae saeg-in-eul seoljeonghamyeon najung-e yeoleo dibeoging-e manh-eun doum-i doebnida.

haegyeolhaneun de doum-i doeneun hangmog-i iss-eumyeon "haegyeol bangbeob-eulo pyosi"hasibsio.

mun-an insa
amadeu

Hello @Ahmad_Rais.Thank you very much!

As you left a comment, I used Write line Activiry instead of Log Message, and the result came out properly!

Thank you once again for your help in answering my question!!

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.