Перевести первую букву каждого слова в верхний регистр
Note: update available - Convert first letter of each word to uppercase (v.2)
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 | *Изменить первую букву каждого слова в адресе на заглавную. DATA LIST FIXED /Address 1-25 (a). BEGIN DATA. 248 n. delphia ave. 9273 Fairvew dr. apt 410 6324 Meadowview corner of south & maine END DATA. * Определим 5 новых строковых переменных чтобы размещать "куски" адреса. * Вам может потребоватья большее количество переменных, если известно, что * в адресах имеется большее количество отдельных слов. STRING a1 to a5 (a25). * Используем цикл DO REPEAT для повтора вычислений для * каждого отдельной части адреса (слова, номера). * Сначал найдём положение первого пробела в адресе. * Затем извлечём подстроку из адреса слева вплоть до первого пробела. * Поместим результат в промежуточную переменную a (1, 2, ...). * Затем укоротим исходный адрес на только что извлечённую строку. * Используем функции CONCAT и UPCASE для того, чтобы преобразовать * первый символ нового куска адреса в верхний регистр и сохранить * результат в той же промежуточной переменной а (1, 2, ...). * Эта последовательность по вторяется 5 раз. Если известно, что "кусков" адреса * будет больше, определите больше промежуточных переменных: a1 to a8, например. DO REPEAT a=a1 to a5. COMPUTE space=index(address," "). COMPUTE a=substr(address,1,space-1). COMPUTE address=substr(address,space+1). COMPUTE a=concat(upcase(substr(a,1,1)),substr(a,2)). END REPEAT PRINT. * Теперь собираем части адреса в новый адрес. Используем функцию RTRIM * для отсечения замыкающих пробелов в частях адреса и вставляем * пробелы там, где это надо. COMPUTE address=concat(rtrim(a1)," ", rtrim(a2)," ",rtrim(a3)," ", rtrim(a4)," ",rtrim(a5)). LIST variables=address. |