문자형 숫자형 분리

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

이 게시글은 1개 답변과 2명 참여가 있으며 마지막으로  Jonghyuk에 의해 6 년, 4 월 전에 업데이트 됐습니다.

  • 글쓴이
  • #669 답변

    nucleem
    회원

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

  • #683 답변

    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 가 사용되었습니다.
    그 결과는 보시다 시피 끊어져 나왔구요. 이걸 연결하면 구분자(이 예제에서는 숫자 덩어리들)만 쏙 빠지는 결과가 됩니다.

'문자형 숫자형 분리'에 답변달기
글쓴이 정보: