06.09.2004, 10:53 | #1 |
Участник
|
Символ в строке
Есть строка
,,Казань,,Татарстан,11,,38 Надо из нее выдернуть город (после двух запятых), улицу (после 4-х запятых) и т.д. У меня есть алгоритм, но чтобы он заработал мне нужен доступ к отдельному символу строки, как если бы она была массивом.. Таких функций в аксапте я не нашел (может плохо искал).. Есть идеи? |
|
06.09.2004, 11:19 | #3 |
Участник
|
это мой старый топик
Но в нем нет ответа на мой новый вопрос..
|
|
06.09.2004, 11:32 | #4 |
Участник
|
PHP код:
|
|
06.09.2004, 11:53 | #5 |
Участник
|
Цитата:
Изначально опубликовано Lexey
PHP код:
substr( stree, n, 1 ) (в аксапте как и в бейсике нет символьного типа данных (char), за символ достаточно принять строку с длиной 1) |
|
06.09.2004, 11:55 | #6 |
1C
|
А разве строка не есть массив символов?
PHP код:
|
|
06.09.2004, 12:13 | #7 |
Участник
|
Цитата:
Изначально опубликовано Alks
Гхм... давайте уже без извращений, всё проще и производительнее: |
|
06.09.2004, 12:22 | #8 |
Участник
|
Цитата:
Изначально опубликовано YVAS
А разве строка не есть массив символов? PHP код:
|
|
06.09.2004, 12:22 | #9 |
Дмитрий Ерин
|
Цитата:
Изначально опубликовано YVAS
А разве строка не есть массив символов? PHP код:
2 Smith: Кроме приведенного здесь, посмотрите еще класс TextBuffer - там много вкусного, а также методы класса Global. 2 Lexey: Наверное, не con2str(), а str2con()?
__________________
|
|
06.09.2004, 12:28 | #10 |
1C
|
2Ruff, Alks
Ребят спасибо, просто Аксапты под рукой нет. Проверить не могу. |
|
06.09.2004, 12:30 | #11 |
Участник
|
Цитата:
Изначально опубликовано Lexey
Давайте. Цифирки n и 1 как будем искать? Напомню - задача стояла ''выдернуть город (после двух запятых), улицу (после 4-х запятых) ". |
|
06.09.2004, 12:57 | #12 |
Administrator
|
А зачем Вам вообще какой-то алгоритм? Есть прекрасный класс TextBuffer, который умеет работать с token'ами:
PHP код:
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
06.09.2004, 13:03 | #13 |
Участник
|
Ну вот и разобрались
|
|
06.09.2004, 13:56 | #14 |
Участник
|
Спасибо!
Взял на вооружение наиболее простой и наглядный для меня способ из описанных здесь. Вот что получилось:
X++: static void Job5(Args _args) { str sTmp, sS = ',,Казань,,Амирхана,31,2,89'; int zpt, i = 1; ; zpt = 0; while (i != StrLen(sS)+1) { if (subStr(sS, i, 1) != ',') { sTmp = sTmp + subStr(sS, i, 1); } else { zpt++; switch (zpt) { case 3: print('city ' + sTmp);break; case 5: print('street ' + sTmp);break; case 6: print('House ' + sTmp);break; case 7: print('Building ' + sTmp);break; } sTmp = ''; } // print(subStr(sS, i, 1)); i++; } print('Flat ' + sTmp); pause; } |
|
06.09.2004, 14:22 | #15 |
Участник
|
PHP код:
|
|
06.09.2004, 15:32 | #16 |
Дмитрий Ерин
|
Re: Спасибо!
Цитата:
Изначально опубликовано Smith
Взял на вооружение наиболее простой и наглядный для меня способ из описанных здесь. ... Работает и хорошо! То, что Вы нашли частное решение для конкретного случая - это на первый взгляд хорошо, но когда, в будущем, возникнут похожие задачи, и каждый раз придется придумывать новый алгоритм, то это вполне может привести к увеличению вероятности ошибки. Да, TextBuffer поначалу выглядит тяжеловато и громоздко, но как говорится "лучше день потерять, а потом за час долететь"!
__________________
|
|
06.09.2004, 23:39 | #17 |
Участник
|
Re: Символ в строке
Цитата:
Изначально опубликовано Smith
Есть строка ,,Казань,,Татарстан,11,,38 Надо из нее выдернуть город (после двух запятых), улицу (после 4-х запятых) и т.д. Без программирования задача должна ставится следующим образом: есть клиент - узнать из адреса его город и улицу. Адрес строится согласно адресного формата. Теперь и только теперь в дело вступает программист. Во-первых, не надо ничего программировать и ничего никуда переводить, не надо никаких строк. Во-вторых, смотрим стандартный функционал. Есть map AddressMap. У него есть метод AddressMap.loadFields(). Этот метод возвращает контейнер [address, streetName, zipCodeId, city, countryId, stateId, countyId]. Вот и юзайте этот стандартный метод. В сторону и про себя: вот бы локализаторы вместо того, чтобы городить свои мапы, нормально расширили бы станадртные... Тогда вызов будут выглядеть так: PHP код:
Если же вы все такие поторопились и у вас есть только строка, то можно выкрутиться следующим образом - присвоить эту строку новой записи. Не забудьте указать страну. PHP код:
|
|