【216】◀▶ IDL 字符串操作说明 (黑底)
参考:String Processing Routines —— 字符串处理函数
01 | STRING | 返回字符串。 | |
02 | STRCMP | 比较字符串,一样返回1,不一样返回0,默认大小写敏感。 | |
03 | STRMATCH | 字符串进行比较,一致返回1,不一致返回0。 | |
04 | STRCOMPRESS | 将字符串中的空格和Tab等压缩成一个空格。 | |
05 | STRJOIN | 将字符串数组合并成一个字符串。 | |
06 | STRLEN | 返回字符串的长度。 | |
07 | STRPOS | 字符串中字符所在的索引值,返回数值。 | |
08 | STRMID | 字符串截取,返回截取后的字符串。 | |
09 | STRPUT | 将后面字符串替换前面相同数目的字符串。 | |
10 | STRSPLIT | 默认返回拆分索引数组,也可返回拆分字符串数组。 | |
11 | STRTRIM | 删除字符串前后的空格。 | |
12 | STRUPCASE | 字符串大写。 | |
13 | STRLOWCASE | 字符串小写。 |
序号 | 名称 |
功能说明 |
语法 & 举例 | ||
01 | STRING |
====<<<< Description >>>>==== 返回字符串。 ====<<<< Syntax >>>>==== Result = STRING( Expression1, ..., Expressionn [, AM_PM=[string, string]] [, DAYS_OF_WEEK=string_array{7 names}] [, FORMAT=value] [, /IMPLIED_PRINT] [, MONTHS=string_array{12 names}] [, /PRINT] )
---------------------------------------------------------------------------------- ====<<<< Return Value >>>>==== 返回值为字符串或字符串数组。 ====<<<< Parameters >>>>====
◈ Expression:表达式。 |
IDL> ;相当与合并字符串 IDL> str = string('a','b','c','d') IDL> str abcd IDL> b = string(indgen(5)) IDL> help, b B STRING = Array[5] IDL> ;数字补0 IDL> string(1, format='(I03)') 001 |
||
02 | STRCMP |
====<<<< Description >>>>==== 比较字符串,一样返回1,不一样返回0,默认大小写敏感。 ====<<<< Syntax >>>>====
STRCMP(Str1, Str2 [, N], /FOLD_CASE) ====<<<< Parameters >>>>==== ◈ N:比较前N个字符 |
◈ 返回值:1 STRCMP('Moose', 'mooMD', 3, /FOLD_CASE) ◈ 返回值:0 STRCMP('Moose', 'mooMD', 4, /FOLD_CASE) |
||
03 | STRMATCH |
====<<<< Description >>>>==== 字符串进行比较,一致返回1,不一致返回0。 ====<<<< Syntax >>>>====
STRMATCH(Str, SearchStr, /FOLD_CASE) ====<<<< Parameters >>>>====
◈ SearchStr:可以使用通配符 |
◈ 返回值:1 STRMATCH('alexlee', 'alex?ee') ◈ 返回值:0 STRMATCH('alexlee', 'alex[abc]ee') ◈ 返回值:1 STRMATCH('alexlee', 'alex[abclmn]ee') |
||
04 | STRCOMPRESS |
====<<<< Description >>>>==== 将字符串中的空格和 Tab 等压缩成一个空格。 ====<<<< Syntax >>>>====
STRCOMPRESS(String, /REMOVE_ALL) ====<<<< Parameters >>>>====
◈ REMOVE_ALL:删除所有空格 |
◈ 返回值:alex lee STRCOMPRESS('alex lee') ◈ 返回值:alexlee STRCOMPRESS('alex lee', /REMOVE_ALL) |
||
05 | STRJOIN |
====<<<< Description >>>>==== 将字符串数组合并成一个字符串。 ====<<<< Syntax >>>>====
STRJOIN(String [, Delimiter], /SINGLE) ====<<<< Parameters >>>>====
◈ String:字符串数组 |
◈ 返回值:ABCCDEFG STRJOIN(['ABC', 'CDE', 'FG']) ◈ 返回值:ABC-CDE-FG STRJOIN(['ABC', 'CDE', 'FG'], '-') |
||
06 | STRLEN |
====<<<< Description >>>>==== 返回字符串的长度。 ====<<<< Syntax >>>>====
STRLEN(Expression) ====<<<< Parameters >>>>==== ◈ Expression:字符串表达式,如果不是字符串则按照默认规则转换成字符串进行计算,例如整数;如果是数组则按照与原数组一致的结构返回每一个要素的长度。 |
IDL> strlen(5) 8 IDL> strlen(['a', 'abc', 'alex']) 1 3 4 IDL> strlen('alex' + 'lee') 7 |
||
07 | STRPOS |
====<<<< Description >>>>==== 字符串中字符所在的索引值,返回数值。 ====<<<< Syntax >>>>====
STRPOS(Expression, Search_String [, Pos], /REVERSE_OFFSET, /REVERSE_SEARCH) ====<<<< Parameters >>>>==== ◈ Pos:开始搜索的索引值 |
◈ 返回值:0 STRPOS('fun is fun', 'fun') ◈ 返回值:7 STRPOS('fun is fun', 'fun', /REVERSE_SEARCH) ◈ 返回值:7 STRPOS('fun is fun', 'fun', 1) ◈ 返回值:7 STRPOS('fun is fun', 'fun', 4, /REVERSE_OFFSET) |
||
08 | STRMID |
====<<<< Description >>>>==== 字符串截取,返回截取后的字符串。 ====<<<< Syntax >>>>====
STRMID(Expression, First_Character [, Length], /REVERSE_OFFSET) ====<<<< Parameters >>>>==== ◈ First_Character:开始搜索的索引值 |
◈ 返回值:lexbnlee STRMID('alexbnlee', 1) ◈ 返回值:ee STRMID('alexbnlee', 1, /REVERSE_OFFSET) ◈ 返回值:bn STRMID('alexbnlee', 4, 2) |
||
09 | STRPUT |
====<<<< Description >>>>==== 将后面字符串替换前面相同数目的字符串。 ====<<<< Syntax >>>>====
STRPUT, Destination, Source [, Position] ====<<<< Parameters >>>>==== ◈ Destination:变量,操作后发生变化 |
◈ 变量 A = "ALEXBNLEE" ◈ 返回值:IDLXBNLEE STRPUT, A, "IDL" & PRINT, A ◈ 变量 A = "ALEXBNLEE" ◈ 返回值:ALEXBNIDL STRPUT, A, "IDL", 6 & PRINT, A |
||
10 | STRSPLIT |
====<<<< Description >>>>==== 默认返回拆分索引数组,也可返回拆分字符串数组。 ====<<<< Syntax >>>>====
STRSPLIT(String [, Pattern] [, COUNT=variable] [, ESCAPE=string] [, /FOLD_CASE]] [, /EXTRACT|, LENGTH=variable]) ====<<<< Parameters >>>>==== ◈ String:欲拆分的字符串或字符串数组 |
◈ 变量 str = "alex is so cute" ◈ 变量 str1 = "alex-is-so-cute" ◈ 返回值:[0, 5, 8, 11] STRSPLIT(str) STRSPLIT(str1, "-") ◈ 变量 str = "alex is so cute" ◈ 处理后,count=4 STRSPLIT(str, COUNT=count) ◈ 变量 str2 = ";alex;-;is;-;so;-;cute;" ◈ 返回值:alex-is-so-cute STRSPLIT(str2, ESCAPE=";", /EXTRACT) ◈ 变量 str = "alex is so cute" ◈ 处理后,length=[4, 2, 2, 4] STRSPLIT(str, LENGTH=length) |
||
11 | STRTRIM |
====<<<< Description >>>>==== 删除字符串前后的空格。 ====<<<< Syntax >>>>==== STRTRIM(String [, Flag]) ====<<<< Parameters >>>>====
◈ Flag: |
◈ STRTRIM(a):去掉后面的空格 ◈ STRTRIM(a, 1):去掉前面的空格 ◈ STRTRIM(a, 2):去掉前后的空格 |
||
12 | STRUPCASE |
====<<<< Description >>>>==== 字符串大写。 ====<<<< Parameters >>>>====
STRUPCASE(String) |
|
||
13 | STRLOWCASE |
====<<<< Description >>>>==== 字符串小写。 ====<<<< Parameters >>>>====
STRLOWCASE(String) |
|||
14 | WHERE |
====<<<< Description >>>>==== 返回值为包含查询字符串的向量。 ====<<<< Syntax >>>>==== Result = WHERE( Array_Expression [, Count] [, COMPLEMENT=variable] [, /L64] [, NCOMPLEMENT=variable] [, /NULL] )
---------------------------------------------------------------------------------- ====<<<< Return Value >>>>==== 返回值为包含查询字符串的向量。如果 /NULL 设置了,那么没有匹配的时候返回值为 !NULL。 ====<<<< Parameters >>>>====
◈ Array_Expression:要被搜索的数组表达式。 |
IDL> a = indgen(5) IDL> a 0 1 2 3 4 IDL> b = where(a gt 2, count, complement=c, ncomplement=num_c) ; 符合表达式的下标 IDL> b 3 4 ; 符合表达式的个数 IDL> count 2 ; 不符合表达式的下标 IDL> c 0 1 2 ; 不符合表达式的个数 IDL> num_c 3 ; 用 !NULL 代替 -1 IDL> print, where(a gt 7) -1 IDL> print, where(a gt 7, /null) !NULL ; 通过判断结果是否为 -1 或者数目是否为 0,可以判断数组内是否包含某要素 IDL> b = ['a', 'b', 'c', 'd', 'a'] IDL> c = where(b eq 'm', count) IDL> if(count eq 0) then print, 'no' no IDL> if(c eq -1) then print, 'no' no |