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:\temp\AMOD0320040707140331.hdf'
IDL> ;获取文件完整路径的文件名
IDL> basename=file_baseName(file)
IDL> print,basename
AMOD0320040707140331
IDL> ;获取文件名中的时间部分字符
IDL> print,strMid(basename,6,8)
20040707

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

IDL> file='c:\temp\AMOD0320040707140331.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

IDL 字符串的更多相关文章

  1. 【216】◀▶ IDL 字符串操作说明 (黑底)

    参考:String Processing Routines —— 字符串处理函数 参考:IDL_String Methods 01   STRING 返回字符串. 02   STRCMP 比较字符串, ...

  2. 【216】◀▶ IDL 字符串操作说明

    参考:String Processing Routines —— 字符串处理函数 01   STRING 返回字符串. 02   STRCMP 比较字符串,一样返回1,不一样返回0,默认大小写敏感. ...

  3. RPC远程过程调用实例详解

    1.创建IDL文件,定义接口. IDL文件可以由uuidgen.exe创建. 首先找到系统中uuidgen.exe的位置,如:C:\Program Files\Microsoft Visual Stu ...

  4. Core Java 总结(字符和字符串类问题)

    所有代码均在本地编译运行测试,环境为 Windows7 32位机器 + eclipse Mars.2 Release (4.5.2) 2016-10-17 整理 字符,字符串类问题 正则表达式问题 J ...

  5. 【232】◀▶ IDL显示地理图像

    参考: 01   IMAGE 将图像数据以图形窗体的形式显示. 02   COLORBAR 在已经存在的IDL图形中增加一个colorbar或创建. 03   MAPGRID 在已经存在的IDL地图图 ...

  6. IDL简介与corba入门案例

    IDL接口定义语言简介   IDL用中立语言的方式进行描述,能使软件组建(不同语言编写的)间相互通信. IDL提供了一个桥来连接不同的系统. Corba 上的服务用IDL描述,将被映射为某种程序设计语 ...

  7. IDL与C#混合编程技术

    C# (C Sharp)是微软公司在2000年6月发布的一种新的编程语言.C#与Java有很多的相似之处,包括了诸如单一继承.界面.与Java几乎同样的语法,和编译成中间代码再运行的过程.它又借鉴了D ...

  8. IDL基础

    先列后行 arr=indgen(3,4) SIZE(arr,/dimensions) print ,where(arr gt7) print,arr[where(arr gt 7)] print,wh ...

  9. 关于文件读写IDL

    1.打开文件 IDL从磁盘上的文件读写数据,必须首先把一盒逻辑设备号连接到一个指定的文件,然后进行文件操作,如打开,关闭和读取等.IDL中的逻辑设备号的范围是-2——128,其中1-99是用户可以任意 ...

随机推荐

  1. Error:Failed to load project configuration:xxxxxxxxxxxxxxxxxxxx cannot read file .idea/misc.xml

    你这idea不会没有配置默认jdk吧?你看看File--other settings--default project structure,看看project setting的project里面,有没 ...

  2. 转:【Java集合源码剖析】ArrayList源码剖析

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/35568011   本篇博文参加了CSDN博文大赛,如果您觉得这篇博文不错,希望您能帮我投一 ...

  3. Linux下undefined reference to ‘pthread_create’问题解决

    Linux下undefined reference to 'pthread_create'问题解决 在试用Linux 线程模块时,试用pthread_create 函数. 编译命令为 gcc main ...

  4. jq分页插件,支持动态,静态分页的插件,简单易用。

    工作中经常要用到分页功能.为了方便封装了一个比较通用的分页插件开源出来了,简单易用. 官网:https://cwlch.github.io/Ch_Paging 下载地址:https://github. ...

  5. 201521123029《Java程序设计》第七周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 参考资料:XMind 答: 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contain ...

  6. 201521123032 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 2. 书面作业 1. clone方法 1.1 Object ...

  7. 201521123004《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周主要内容为: 继承:extends 抽取共同特征(行为与属性) 复用代码 继承时子类将获 ...

  8. 201521123008《Java程序设计》第1周学习总结

    本周学习总结 了解了JAVA:jdk:jre:jvm等 C语音与JAVA的部分区别: C语言全面向过程,java面向对象: C语言的代码不能跨平台,java的代码可以跨平台: C语言有指针,java没 ...

  9. self、parent和$this关键字

    self.parent和$this关键字的区别: self关键字用来指定当前的类,而且该关键字通常用来访问类的静态成员.方法和常量.parent关键字用于指向父类,所以使用该关键字调用父类的属性和方法 ...

  10. ToStringBuilder学习总结

    一.简介与引入   1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.Co ...