Имя: Пароль:
1C
1С v8
1С 8.2: Работа со строкой-нужно найти вхождение символа и удалить символы после
0 Kleo
 
28.09.11
08:18
Есть Строка, например:

Москва,Ленина,100,3

или может быть строка

Москва,Ленина,100,223

Так вот мне нужно и из первой и из второй строки получить строку

Москва,Ленина,100


как обрубить, это понятно спомощью функции Сред(Адрес,1,СтрДлина(Адрес) - КолЛишнихСимволов)

а вот как определить КоЛишнихСимволов? мне нужно получается в строке найти последнюю запятую и удалить последнюю запятую и символы после нее.
помогите, пожалуйста.
1 ZanderZ
 
28.09.11
08:21
в типовых смотри РазложитьСтрокуВМассивПодстрок
2 Kleo
 
28.09.11
08:26
(1) это точно то, что нужно? мне нужно получается найти вхождение символа, и не просто вхождение, а последнее вхождение в строке и определить номер расположения
3 SeraFim
 
28.09.11
08:29
Встроенные функции языка.Лев (Script functions.Left)
Синтаксис:

Лев(<Строка>, <ЧислоСимволов>)
Параметры:

<Строка> (обязательный)

Тип: Строка. Исходная строка.
<ЧислоСимволов> (обязательный)

Тип: Число. Количество выбираемых символов.
Возвращаемое значение:

Тип: Строка. Строка выбранных символов.
Описание:

Выбирает первые слева символы строки.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
4 Kleo
 
28.09.11
08:37
(3) насмешил, мне нужно не Лев, а Сред - это я уже написала.
а вот ЧислоСимволов, которое нужно убрать - как раз величина неизвестная
5 Alex375
 
28.09.11
08:40
Тебе 2 решения уже предложили: использовать разложение на массив, где в качестве разделителя в строке используется твой символ ",". И второе - в цикле можно используя лев почастям резать исходную строку и пихать ее в результирующую.
6 Gesperid10
 
28.09.11
08:41

Поз = СтрДлина(Адрес);
Пока Сред(Адрес, Поз, 1)  <> "," И Поз > 0  Цикл
 Поз = Поз - 1;
КонецЦикла;
Результат = Сред(Адрес,1,СтрДлина(Адрес) - Поз + 1)
7 Kleo
 
28.09.11
08:42
(5) РазложитьСтрокуВМассивПодстрок немного не подходит - мне не нужно получать несколько строк. но нашла в этой функции функцию Найти, которую придется в цикле запускать
8 DJ Anthon
 
28.09.11
08:43
(6) вот они, неопрограммисты.. ;))
9 Kleo
 
28.09.11
08:43
(6) а вот это подходит! спасибо большое!

спасибо всем!
10 Alex375
 
28.09.11
08:44
(7) после того как массив получен удаляешь последний элемент и массив обратно в строку переделываешь.
11 SeraFim
 
28.09.11
08:44
(4) в чем проблема-то? что мешает найти позицию последней запятой и при помощи Лев() взять символы, которые стоят до этой запятой?
12 SeraFim
 
28.09.11
08:45
+(11) кстати, про фотку забыли ;)
13 Gesperid10
 
28.09.11
08:46
ну да, Лев(Адрес,1,Поз-1)
14 Kleo
 
28.09.11
08:46
(11) как раз мешает то, как найти последнюю позицию запятой... )))
15 SeraFim
 
28.09.11
09:00
ну, как вариант:

   ПозицияПоследнейЗапятой = 0;
   для ном = 1 по СтрДлина(адрес) цикл
       Если Символ(КодСимвола(адрес,ном)) = "," тогда
           ПозицияПоследнейЗапятой = ном;
       КонецЕсли;
   конецЦикла;
16 catena
 
28.09.11
09:01
(7)Действительно, это так сложно - удалить хвост и сложить обратно в строку :)
17 Man4kin
 
28.09.11
09:07
Буфер = стрЗаменить(Адрес,",",Символы.ПС);
Город = стрПолучитьСтроку(Буфер,1);
Улица = стрПолучитьСтроку(Буфер,2);
Дом = стрПолучитьСтроку(Буфер,3);

пример как разложить, а так по строкам потом можно собрать результирующую строку
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший