간단한 배열의 위치 찾기 질문입니다.

게시판 IDL Q&A 간단한 배열의 위치 찾기 질문입니다.

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #868 Reply
      ChoiYoun
      회원

      안녕하세요. 짧은 내용이니 바로 본론을 말씀드리자면,

      time = ‘201312312359’

      라는 문자열이 있을 때 이걸

      yy = 2013
      mm = 12
      dd = 31
      hh = 23
      mi = 59

      라는 정수형태의 변수로 각각 저장하고 싶을 땐 무슨 함수를 사용하면 되나요? strsplit을 활용해보려고 하니 잘 안되는군요.

    • #869 Reply
      Jonghyuk
      회원

      strsplit()은 문자열 안에 원소와 원소를 구분할 수 있는 구분자(예를 들면, 공백이나 콤마 같은)가 있을 경우에 쓸모가 있습니다. 이와 같이 쭉 붙어 있는 문자열에서 자리수만 가지고 연월일시분을 구분하게 될 때는 strmid() 함수를 쓰는 것이 일반적입니다.

      time = ‘201312312359’

      yy=fix(strmid(time, 0, 4))
      mm=fix(strmid(time, 4, 2))
      dd=fix(strmid(time, 6, 2))
      hh=fix(strmid(time, 8, 2))
      mi=fix(strmid(time, 10, 2))

      strmid(문자열, 시작위치, 문자개수) 의 형식이므로 결과도 직관적입니다. 다만 strmid()의 리턴값도 문자열 타입미으로 fix() 함수를 써서 정수형으로 바꾸었습니다. 정수형 변환이 필요 없다면 fix() 함수를 벗겨내면 됩니다.

      좀 다른 방법으로 다음과 같이 format 코드를 이용하여 분해하는 방법도 있습니다.

      yy=0 & mm=0 & dd=0 & hh=0 & mi=0
      reads, time, yy, mm, dd, hh, mi, format='(I4,4I2)’

      C의 printf 스타일 포맷코드를 이용하면 다음과 같이 씁니다. 내부 작동 방식은 동일합니다.

      reads, time, yy, mm, dd, hh, mi, format='(%”%4d%2d%2d%2d%2d”)’

1 답변 글타래를 보이고 있습니다
'간단한 배열의 위치 찾기 질문입니다.'에 답변달기
글쓴이 정보: