Извлечь часть строки, начинающуюся с цифры
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 | *(Вопрос) Теперь мне надо найти часть строки, которая относится к имени, * и часть, которая относится к адресу. Например: "Bloggs J 10 Smith St" должна быть разбита по 2 переменным, "Bloggs J" и "10 Smith St". *(Ответ) Размещён в SPSSX-L 25.7.2002. Автор: Raynald Levesque. ******************. * Вот первый способ. ******************. DATA LIST FIXED /str1 1-25 (A). BEGIN DATA Bloggs J 10 Smith St Bloggs John 12 Smith St END DATA. LIST. VECTOR nb(25F2). LOOP cnt=1 TO 25. COMPUTE nb(cnt)=cnt*(1-NMISS(NUMBER(SUBSTR(str1,cnt,1),F1))). END LOOP. LOOP cnt=1 TO 25. IF nb(cnt)=0 nb(cnt)=$SYSMIS. END LOOP. COMPUTE pos=MIN(nb1 TO nb25). STRING addr(A25). COMPUTE addr=SUBSTR(str1,pos). *Убираем лишнее. ADD FILES FILE=* /DROP=pos nb1 TO nb25 cnt. **************. *А вот более эффективный способ. **************. DATA LIST FIXED /str1 1-25 (A). BEGIN DATA Bloggs J 10 Smith St Bloggs John 12 Smith St END DATA. LIST. LOOP #cnt=1 TO 25. END LOOP IF #cnt*(1-NMISS(NUMBER(SUBSTR(str1,#cnt),F1)))>0. STRING addr(A25). COMPUTE addr=SUBSTR(str1,#cnt). EXECUTE. |
Related pages
...