Показать сообщение отдельно
Старый 06.09.2004, 23:39   #17  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: Символ в строке
Цитата:
Изначально опубликовано Smith
Есть строка

,,Казань,,Татарстан,11,,38

Надо из нее выдернуть город (после двух запятых), улицу (после 4-х запятых) и т.д.
Не, это программистский подход.

Без программирования задача должна ставится следующим образом: есть клиент - узнать из адреса его город и улицу. Адрес строится согласно адресного формата.

Теперь и только теперь в дело вступает программист.

Во-первых, не надо ничего программировать и ничего никуда переводить, не надо никаких строк.
Во-вторых, смотрим стандартный функционал. Есть map AddressMap. У него есть метод AddressMap.loadFields(). Этот метод возвращает контейнер [address, streetName, zipCodeId, city, countryId, stateId, countyId].
Вот и юзайте этот стандартный метод.

В сторону и про себя: вот бы локализаторы вместо того, чтобы городить свои мапы, нормально расширили бы станадртные...

Тогда вызов будут выглядеть так:
PHP код:
Containter c;
custTable.AddressMap::loadFields()
infoconpeek(c4) ); // город
infoconpeek(c2) ); // улица 
Метод будет работать с ЛЮБЫМ адресным форматом!

Если же вы все такие поторопились и у вас есть только строка, то можно выкрутиться следующим образом - присвоить эту строку новой записи. Не забудьте указать страну.

PHP код:
Container c;
CustTable custTable;
;
custTable.country 'RU'// укажите код России в вашей базе
custTable.address ", , , Казань, Татарстан, 11, , 38";
custTable.AddressMap::loadFields();
infoconpeek(c4) ); // город
infoconpeek(c2) ); // улица 
Обратите внимание, что строка должна полностью соответствовать адресному формату. Так у меня в качестве разделителей указана запятая с пробелом ", ". Поэтому в строке мне пришлось добавить пробелы и передвинуть Казань на четвертую позицию...