문자형 숫자형 분리

게시판 IDL Q&A 문자형 숫자형 분리

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

      지난번에 답변 감사합니다. 덕분에 잘해결하였습니다.
      file name을 불러왔는데, 숫자와 문자가 복합적으로 되어있습니다.
      예를 들어 파일이름이 A_DDE_123이라면 123만 제거하고 A_DDE_라는 문자형만 받고 싶은데,
      파일이름형식이 고정이라면 strmid를 사용하면될거 같은데, 그렇지 않아 고민입니다.
      파일이름에서 숫자만 제거하는 방법이 IDL에서 어떻게 구현할 수 있는지 알려주시면 감사하겠습니다.

    • #683 Reply
      Jonghyuk
      회원

      문자열 다루는 기능들을 조금 더 검토하시면 유용한 기능들이 있습니다.
      1. STRSPLIT() 함수는 입력 문자열을, 구문자 문자열을 기준으로 끊어냅니다.
      2. 정규식(Regular Expression) 이라는 게 있습니다. 이 것만 가지고 책 한권 분량 나오지만, 유용한 거 몇개 만 배우시면 쓸모가 꽤 있습니다. 예를 들어 [0-9] 는 0,1,2,3,4,5,6,7,8,9 중 하나를 의미하고, +는 바로 앞의 문자가 하나 또는 여러개가 연속해서 등장하는 것을 의미합니다. 그래서 [0-9]+ 는 숫자가 뭉쳐있는 곳을 의미합니다.
      3. STRJOIN() 함수는 입력 문자열 배열 사이사이에 구분자 문자열을 끼워 넣어 하나의 문자열로 연결합니다.

      아래 예제를 보십시오.
      IDL> a=’A_DDE_123_DEF13QP45AV’
      IDL> splt=strsplit(a, ‘[0-9]+’, /REGEX, /EXTRACT)
      IDL> print, splt
      A_DDE_ _DEF QP AV
      IDL> print, strjoin(splt)
      A_DDE__DEFQPAV

      a 문자열을 숫자가 있는 부분을 구분자라고 생각하고 끊어냅니다. /REGEX 는 구분자 문자열로 제공되는 것이 “정규식”이라는 것을 의미하고, 끊어낸 각각을 문자열 배열로 리턴하라는 의미로 /EXTRACT 가 사용되었습니다.
      그 결과는 보시다 시피 끊어져 나왔구요. 이걸 연결하면 구분자(이 예제에서는 숫자 덩어리들)만 쏙 빠지는 결과가 됩니다.

1 답변 글타래를 보이고 있습니다
'문자형 숫자형 분리'에 답변달기
글쓴이 정보:




취소