Замена отдельных символов в строке
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | * Замена отдельных символов в строке. * Легко ли это? Поскольку в SPSS, как будто, отсутствует встроенная функция замены, это требует довольно трудоёмкого вмешательства, особенно если в строке заменяемый символ встречается более одного раза. * Я пришёл к следующему решению, которое успешно прошло испытания: * Автор: Tim Dunsworth, размещено в SPSSX-L 10 апреля 2000 г. * (в следующих примерах заменяем "&" на "/" - примеч. перев.). DO IF (INDEX(cases,"&")>0). LOOP. COMPUTE cases = CONCAT(SUBSTR(cases,1,INDEX(cases,"&")-1),"/", SUBSTR(cases,INDEX(cases,"&")+1,LENGTH(cases)-INDEX(cases,"&"))). END LOOP IF (INDEX(cases,"&")=0). END IF. EXECUTE. *------------------------------------------------------. *Автор следующего решения: Tverdek Edward из SPSS. * Пример данных. DATA LIST /mystring 1-5 (A). BEGIN DATA &abcd e&gh& jk&mn o&q&s tuvw& END DATA. * Разносим исходную строку по нескольким переменным. VECTOR x (5,A). LOOP #i=1 TO 5. COMPUTE x(#i)=SUBSTR(mystring,#i,1). END LOOP. * Перекодируем символы. RECODE x1 TO x5 ('&'='/'). * Восстанавливаем строку из нескольких переменных. STRING new (A5). COMPUTE new=CONCAT(x1,x2,x3,x4,x5). LIST. ************************************************. * Следующее (неполное) решение предложено Hillel Vardi 11.04.2000 (требует добавления цикла). compute II=INDEX(cases,"&") DO IF II GT 0 COMPUTE SUBSTR(cases,II,1)="/" END IF |
Related pages
...