idl中的字符串识别
String recognition in idl
我有以下字符串:
F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_East_A.dat
F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_Froemke-Hoy.dat
我想从每个变量中提取三个变量,1. SWIR32
2. 日期和 3. 日期后的文本。我想为大约 200 个文件自动执行此过程,因此单独选择位置对我来说并不完全适用。
所以我想要:
variable1=SWIR32
variable2=2005210
variable3=East_A
variable4=SWIR32
variable5=2005210
variable6=Froemke-Hoy
稍后我将使用它们为图表添加标题,但由于文本在每个字符串中的位置不同,我不确定如何使用 strmid
我想您想结合使用 STRPOS 和 STRSPLIT。类似于以下内容:
s = ['F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_East_A.dat', $
'F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_Froemke-Hoy.dat']
name = STRARR(s.length)
date = name
txt = name
foreach sub, s, i do begin
sub = STRMID(sub, 1+STRPOS(sub, '\', /REVERSE_SEARCH))
parts = STRSPLIT(sub, '_', /EXTRACT)
name[i] = parts[0]
date[i] = parts[1]
txt[i] = STRJOIN(parts[2:*], '_')
endforeach
您也可以使用正则表达式(仅使用 STRSPLIT)执行此操作,但正则表达式往往很复杂且容易出错。
希望对您有所帮助!
我有以下字符串:
F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_East_A.dat
F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_Froemke-Hoy.dat
我想从每个变量中提取三个变量,1. SWIR32
2. 日期和 3. 日期后的文本。我想为大约 200 个文件自动执行此过程,因此单独选择位置对我来说并不完全适用。
所以我想要:
variable1=SWIR32
variable2=2005210
variable3=East_A
variable4=SWIR32
variable5=2005210
variable6=Froemke-Hoy
稍后我将使用它们为图表添加标题,但由于文本在每个字符串中的位置不同,我不确定如何使用 strmid
我想您想结合使用 STRPOS 和 STRSPLIT。类似于以下内容:
s = ['F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_East_A.dat', $
'F:\Sheyenne\ROI\SWIR32_subset\SWIR32_2005210_Froemke-Hoy.dat']
name = STRARR(s.length)
date = name
txt = name
foreach sub, s, i do begin
sub = STRMID(sub, 1+STRPOS(sub, '\', /REVERSE_SEARCH))
parts = STRSPLIT(sub, '_', /EXTRACT)
name[i] = parts[0]
date[i] = parts[1]
txt[i] = STRJOIN(parts[2:*], '_')
endforeach
您也可以使用正则表达式(仅使用 STRSPLIT)执行此操作,但正则表达式往往很复杂且容易出错。
希望对您有所帮助!