zoukankan      html  css  js  c++  java
  • IDL 字符串

    1.创建字符串

      字符串和字符串数组通过赋值或函数方式来创建。在IDL字符串用" "或' '括起来表示。

    IDL> s1="abcdef"
    IDL> help,s1
    S1              STRING    = 'abcdef'
    IDL> s2=strarr(4)
    IDL> help,s2
    S2              STRING    = Array[4]

      以"为首的字符串的首字符不能为数字,因为以"开头的数字串代表一个8进制数,如"11表示8进制的11,即10进制的9

    IDL> help,"11
    <Expression>    INT       =        9

      当字符串中需要包含'或"时,可以再字符串里面写两个同样的'或"符号,示例代码如下

    IDL> s1="abcdef"
    IDL> help,s1
    S1              STRING    = 'abcdef'
    IDL> s2="a'b'c"
    IDL> help,s2
    S2              STRING    = 'a'b'c'
    IDL> s3='ab"c'
    IDL> help,s3
    S3              STRING    = 'ab"c'
    IDL> s4="ab""""c"
    IDL> help,s4
    S4              STRING    = 'ab""c'

    2.字符串连接

      直接用加号“+”

    IDL> s1="abc"
    IDL> s2="def"
    IDL> s3=s1+s2
    IDL> help,s3
    S3              STRING    = 'abcdef'

    3.字符串转换

      字符串可以直接转换为字节类型(byte),而整型(int)、浮点型(float)等其他类型不允许直接转换,需要先将字符串转换为子姐姐类型在转换为其他类型;逆变换也是如此。

    IDL> s1="abc"
    IDL> print,byte(s1)
      97  98  99
    IDL> print,fix(s1)
    % Type conversion error: Unable to convert given STRING to Integer.
    % Detected at: $MAIN$          
           0
    IDL> print,fix(byte(s1))
          97      98      99
    IDL> print,string([97,98,99])
          97       98       99
    IDL> print,string(byte([97,98,99]))
    abc

    4.处理函数

      字符串操作都是通过字符串处理函数来实现的

    (1) 字符串截取

      利用字符串操作函数提取采集时间

    IDL> ;文件完整路径
    IDL> file='c:	empAMOD0320040707140331.hdf'
    IDL> ;获取文件完整路径的文件名
    IDL> basename=file_baseName(file)
    IDL> print,basename
    AMOD0320040707140331
    IDL> ;获取文件名中的时间部分字符
    IDL> print,strMid(basename,6,8)
    20040707

      基于文件名计算文件名的扩展名的代码

    IDL> file='c:	empAMOD0320040707140331.hdf'
    IDL> basename=file_basename(file)
    IDL> ;查找文件名中“.”的位置
    IDL> pPos=STRPOS(baseName,".",/REVERSE_SEARCH)
    IDL> ;如存在“.”则输出大写格式的扩展名
    IDL> if pPos [0] -1 then print,StrUpCase(StrMid(basename,pPos[0]+1,3))
    HDF

    (2) 多字串截取

    IDL> str='abcdefghijklmnopqrst'
    IDL> ;数组截取可以彩玉下标数组的方式
    IDL> str1=strmid(str,indgen(4)*5,5)
    IDL> help,srt1
    SRT1            UNDEFINED = <Undefined>
    IDL> print,str1
    abcde fghij klmno pqrst

    (3) 空格去除

      函数有StrTrim和StrCompress,示例代码如下:

    IDL> ;定义整型变量
    IDL> var=41
    IDL> ;转换为字符串   
    IDL> str=string(var)
    IDL> ;转换后前面包含空格
    IDL> help,str
    STR             STRING    = '      41'
    IDL> ;定义前后都包含空格的字符串
    IDL> str="   6   "
    IDL> ;StrTrim函数去除前后空格,参数1只去除前面的空格,参数2去除前后的空格
    IDL> help,strtrim(str,2)
    <Expression>    STRING    = '6'
    IDL> ;字符串前后和中间均有空格
    IDL> str="  5 6 7  "
    IDL> ;函数StrCompress去除字符串中所有的空格
    IDL> help,StrCompress(str,/Remove_all)
    <Expression>    STRING    = '567'

    (4) 数组处理

      利用字符串操作函数求出整型数组中以2开头的子数组

    IDL> arr=[12,23,45,65,25]
    IDL> print,arr[where(strmatch(strtrim(arr,2),'2*') eq 1)]
          23      25

    5.特殊字符

    无法打印输出的特殊字符

    特殊字符对照表
    ASCII字符 数据值(字节型)
    Bell 7B
    后退 8B
    水平TAB 9B
    换行 10B
    数值TAB 11B
    走纸 12B
    回车 13B
    ESC(取消) 27B
  • 相关阅读:
    Flesch Reading Ease (poj 3371)
    保留道路
    列车调度
    三角形
    高精度加法
    AC自动机(1)
    线段树
    并查集(3)
    并查集(2)
    并查集
  • 原文地址:https://www.cnblogs.com/wintertone/p/6610024.html
Copyright © 2011-2022 走看看