2015-10-26 5 views
1

У меня есть следующие строки:распознавания строк в 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

ответ

3

Я думаю, вы хотите использовать комбинацию 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), но регулярные выражения, как правило, сложны и подвержены ошибкам.

Надеюсь, это поможет!

+0

спасибо, есть! –

Смежные вопросы