여오
90
2021-07-20 13:42:33 작성 2021-07-20 13:45:05 수정됨
4
120

vb 문자열 파싱 질문드립니다..!


안녕하세요.


이번에 vb로 개발을 하고있는데요..

restful 방식으로 개발 중 토큰 값 받아오는 과정 중에서 질문드립니다.
url정보가 string 타입에 담겨져오고 아래와 같이 오는데요..

{"locations":[{"uri":"http://192.168.0.000/V110SP15/oauthserver/"}]}

 http://192.168.0.000/V110SP15/oauthserver/ <<<<<<<<만 가져오고 싶은데.. 방법이 없을까요..?

json 파싱 같은건 해당 환경 버전이 낮아서 참조도 안되고.. 외부 라이브러리 참조하는 방법도 몰라서 못하는 상황입니다ㅜㅜ 기본으로 다 사용할 수 있다고 하는데 아무리 해봐도 못하겠습니다..
비쥬얼 스튜디오에서 뭐.뭐. 뜨는거 확인 후 해당 개발 환경에서는 뭐.뭐.하면 없는 경우가 다반사이고.. 
.net 버전이 낮아서 그런 것 같은데요.. 

기본적인 내장함수 split같은 거로 혹시 가능한가요..? 
무조건 몇번째 자리부터 자르는 것이 아닌.. 키는 uri 값은 http://192.168.0.000/V110SP15/oauthserver/  이런식으로 변환해서 가져오는 방법이 없을까요..?
감사합니다.
0
  • 답변 4

  • 오후
    3k
    2021-07-20 13:51:36

    indexof 로 uri 시작위치 찾아서 +6 번째부터 자르고    >>  http://192.168.0.000/V110SP15/oauthserver/"}]}

    다시 indexof 로 ( " ) 까지의 위치 자르면 될거같네요.  >> http://192.168.0.000/V110SP15/oauthserver/

  • 파랭이
    271
    2021-07-20 13:57:27

    들어오는 데이터가 항상 비슷하다면 split이나 instr, instrRev,mid 등으로 간단하게 작성할 수 있을 듯 같네요.

    간단하게 큰 따옴표로 split하면

    b = split(a, """") 로 하면

    배열 b에 1, 3, 5의 홀수 인덱스에 차례로  locations, uri, http://~~~ 가 들어가게 될 것 같아요.

    오류 방지를 위해서 처음에 공백 추가해주고, 등등 한다면 어렵지 않을 듯요...

  • 태현짱와우
    656
    2021-07-20 16:18:54 작성 2021-07-20 16:19:17 수정됨

    정규식써도될듯 은 안되네

  • 신히
    680
    2021-07-20 17:31:56

    정규식을 이용하려면 아래와 같이 하세요.

    strid = "{""locations"":[{""uri"":""" & _
        "http://192.168.0.000/V110SP15/oauthserver/""}]}"
    Set re = New RegExp
    With re
        .Pattern    = ".*(http://.*)\""[}\]]+}$"
        .IgnoreCase = False
        .Global     = True
    End With

    Set Matches = re.Execute( strid )

    If Matches.count > 0 Then
        WScript.Echo Matches(0).SubMatches(0)
    End If

    Set re = Nothing


    🚀 코드 테스트 해보기

  • 로그인을 하시면 답변을 등록할 수 있습니다.