* Тема: замена буквы в строке на набор цифр с последующим конвертированием в число. * Ключевые слова: замена, преобразование, буква, цифры, число, конвертирование. * Опубликован: 16.06.2008. * Автор: Raynald Levesque. * Перевод: А. Балабанов. * Размещение: http://www.spsstools.ru/Syntax/Transform/ReplaceLetterBy9999ThenToNumber.txt (.sps). * (Вопрос) В моей строковой переменной наряду (между, вместо) с цифрами иногда попадаются буквы. * Нужно в таких случаях заменить букву символами "9999", а затем конвертировать полученное значение в число. * (Ответ) Размещён в декабре 2002 года, автор: Raynald Levesque. DATA LIST LIST /rec(F3) var1(A8). BEGIN DATA 1 546.23 2 25.2 3 31.28 4 V28.00 5 2B42. 6 20Z 7 29.C29 8 12345 END DATA. LIST. STRING var2(A13). DO IF INDEX(var1,".")=0. - COMPUTE var2=CONCAT(RTRIM(var1),"."). ELSE. - COMPUTE var2=var1. END IF. EXECUTE. COMPUTE len2=LEN(RTRIM(var2)). LOOP cnt=1 TO len2. - DO IF RANGE(SUBSTR(var2,cnt,1),"a","Z"). - COMPUTE idx=cnt. - BREAK. - END IF. END LOOP. DO IF idx=1. COMPUTE var2=CONCAT("9999",SUBSTR(var2,2)). ELSE IF idx < len2. COMPUTE var2=CONCAT(SUBSTR(var2,1,idx-1),"9999",SUBSTR(var2,idx+1)). ELSE. COMPUTE var2=CONCAT(SUBSTR(var2,1,idx-1),"9999"). END IF. COMPUTE nb=NUMBER(var2,F10.2). FORMATS nb(F16.6). LIST var1 var2 nb.