Имя: Пароль:
1C
 
v8: Подскажите как удалить часть строки (зная с какого по какой символ)
0 dimrus
 
25.11.08
13:54
Весь синтаксис перекопал , не могу найти способ удалить часть строки =(.
т.е. Наименование = "Контрагент; Адрес;"
   Разделитель = Найти(Наименование,";");
 
Воот , а как удалить "Контрагент;" из строки (т.е. с 1 по Разделитель символы)?
1 ТелепатБот
 
гуру
25.11.08
13:54
2 butterbean
 
25.11.08
13:55
(0) сред()
3 vde69
 
25.11.08
13:55
ппц....

Лев()
Прав()
Сред()
4 Долорес И
 
25.11.08
13:56
(0)удалить часть нельзя, склей заново функциями из (3)
5 dimrus
 
25.11.08
13:56
Сред() я выбиру что мне надо это так.. но мне удалить из изначально строки кусочек нада =)
6 Живой Ископаемый
 
25.11.08
13:56
СтрЗаменить (StrReplace)
7 Irbis
 
25.11.08
13:56
Сред(<Строка>, <Начальный номер>, <Число символов>)
СтрЗаменить(<Строка>, <Подстрока поиска>, <Подстрока замены>)
8 Живой Ископаемый
 
25.11.08
13:57
СтрЗаменить(ТвояСтрока, ЧтоНужноЗаменить,"")
9 dimrus
 
25.11.08
13:57
(3) да знаю я это все, МНЕ удалить нада, а не выбрать
10 dimrus
 
25.11.08
13:57
(8) блин... заменить же реально можно. Спасибо ))
11 Живой Ископаемый
 
25.11.08
13:58
Можно еще Аминалон или Ноотропил(Пирацетам) попить... типа наращивают связи между нейронами...
12 Shurjk
 
25.11.08
13:59
86 -г опять же ...
13 dimrus
 
25.11.08
14:08
(12) а причем тут это??
Вопрос был как удалить часть строки??,или отцы 1С уже читают через слова? понабежали с криками а ля (3) написав вообще не в тему... и посчитав что выбрать часть строки = удалить часть строки.
Похоже кризис не только экономический...
14 Fragster
 
гуру
25.11.08
14:08
НовСтр = Лев(СтарСтр,НачСимвол-1)+Прав(СтарСтр,Длина(СтарСтр)-КонСимвол)... ну и там +-1 добавь если надо...
15 Irbis
 
25.11.08
14:09
(13) Для рожденных в 86. Можно и Лев()+Прав() решить.
16 Живой Ископаемый
 
25.11.08
14:10
(14)
СтрЗаменить(Оригинал, Сред(Оригинал,ИзвестныйНомер, Колво),"")
17 skunk
 
25.11.08
14:10
стрТемп = "была строка былая... нам нужно сделать не былой"

попробуй заменить с 1 по 3 символ через стрзаменить
18 dimrus
 
25.11.08
14:11
через СтрЗаменить и делаю, за что уже сказал спасибо )
19 Fragster
 
гуру
25.11.08
14:11
или
НовСтр = "";
Для Сч = 1 По Длина(СтарСтр) Цикл
 Если (Сч>=НачСимв) И (Сч<=КонСимв) Тогда Продолжить; КонецЕсли;
 НовСтр = НовСтр+Сред(СтарСтр,Сч);
КонецЦикла;
20 Sadovnikov
 
25.11.08
14:11
ИМХО, напрасно на (0) наехали. Внятно и правильно задан вопрос. Быстро понят ответ. Сказано спасибо.
Чё не так-то?
21 Fragster
 
гуру
25.11.08
14:12
(16,18) а если строка вида "срсрсрсрсрсрсрсрс", и тебе нужно удалить с 6 по 8 символ?
22 Живой Ископаемый
 
25.11.08
14:13
(21) Мне - не нужно... :)
23 Черный всадник
 
25.11.08
14:14
(16) Интересно, если подстрока встречаетяс 2 раза, что у тебя будет?
24 Fragster
 
гуру
25.11.08
14:14
(22) а что ж решения, которые не универсальны в очень многих случаях, предлагаешь?
25 dimrus
 
25.11.08
14:15
(15) Реши:

Строка = "Х; У; Z; ...."

X,Y,Z - значения заведомо неизвестные, их количество тоже не известное, они разделяютса по ; , неопходимо Разбить Строку на составные части  X,Y,Z...
т.е.

Строка = X
Строка2 = Y
Строка3 = Z
....
СтрокаN = N


Жду решения с Лев()+Прав() , раз такой умный
26 Fragster
 
гуру
25.11.08
14:17
а вообще - в (0) фиговая постановка задачи... смотри заляпуху для v7:
Книга знаний: Преобразование csv в таблицу значений
функция СтрокаВСписок
27 Fragster
 
гуру
25.11.08
14:18
(25) причем (26), именно через лев и прав ;)
28 dimrus
 
25.11.08
14:19
(26) я только упростил постановку, в (25) подробнее
29 Живой Ископаемый
 
25.11.08
14:20
(23)Заменит оба, согласно СП...
(25)В любой типовой Функция РазложитьСтрокуНаПодстроки(ТвояСуперСтрока, "; ")
30 dimrus
 
25.11.08
14:20
(27) Длина X, Y, Z неизвестна
31 Fragster
 
гуру
25.11.08
14:20
(30) ты посмотрел (25)? а в (0) в топике у тебя написано - зная с какого по какой символ... ;)
32 Fragster
 
гуру
25.11.08
14:21
в (31) - (26), а не (25)
33 dimrus
 
25.11.08
14:22
да я сделал после 5-го поста еще, закрывайте тему )
34 Fragster
 
гуру
25.11.08
14:22
(33) нененене
35 Черный всадник
 
25.11.08
14:24
(25) Легко

Результат = новый Массив;

Пока ИсходнаяСтрока <> "" Цикл
 
  ПозицияРазделителя = Найти(ИсходнаяСтрока, Разделитель);
  Если ПозицияРазделителя > 0 Тогда
     
     Результат.Добавить(Лев(ИсходнаяСтрока, ПозицияРазделителя - 1))
     ИсходнаяСтрока = Прав(ИсходнаяСтрока, ДлинаИсходнойСтроки - ПозицияРазделителя - ДлинаРазделителя);
     
  Иначе
     
     Результат.Добавить(ИсходнаяСтрока)
     ИсходнаяСтрока = "";
  КонецЕсли;
 
КонецЦикла;
36 Черный всадник
 
25.11.08
14:28
(26) Читать csv на прямую вообще не легетимно. Есть ADO.
37 Serg_1960
 
25.11.08
14:30
Перчатка брошена и вызов принят... И "это" будни программиста?

Строка = "Х; У; Z; ....";
ЧислоСтрок = СтрЧислоВхождений(Строка, ";")+1;
Строка = СтрЗаменить(Строка, ";", Символы.ПС);
Для К = 1 По ЧислоСтрок Цикл
  Сообщить(СтрПолучитьСтроку(Строка, К));
КонецЦикла;
38 Fragster
 
гуру
25.11.08
14:31
(36) не факт, что сформированные всякими левыми программами csv будут читаться через ADO... хотя фиг знает, не пробовал...
39 Черный всадник
 
25.11.08
14:33
(38) С такими пока не сталкивался,однако скорость закачивания данных через ADO заметно выше, прямого чтения из текстовика.
40 YF
 
25.11.08
14:37
Про СтрЗаменить():
А если та подстрока, которую нужно удалить встречается не один раз, то СтрЗаменить() удалит все вхождения, а челу нужно только одно ...
41 Fragster
 
гуру
25.11.08
14:40
(39) хз... у меня эти файлы размером до 200 кб - полет нормальный... в смысле - загружает моментом... если б надо было - тогда бы попробовал...
42 Живой Ископаемый
 
25.11.08
14:40
(40) как узнал, что только одно?
43 YF
 
25.11.08
14:42
(42) из (0) "Подскажите как удалить часть строки (зная с какого по какой символ) "
44 Fragster
 
гуру
25.11.08
14:44
(43) да челу нужно просто мозгом научится пользоваться... потому как задачу он нормально только в (25) нормально сформулировал...
45 Живой Ископаемый
 
25.11.08
14:45
(43) ай ну, слабый аргумент, применительно к автору ветки.. :)
===
А можно еще так:
   //Получается нужно прочитать текст в одну строку с пробелами, потом разбить
   //строку по словам, плюс еще из слов поудалять разного рода знаки препинания...
   ВесьТекстКакСтрока="";
   Для Каждого ТекущаяСтрока Из ЭтотОбъект.Текст Цикл
       Состояние("Собираю предложения в одну строку");
       ВесьТекстКакСтрока=ВесьТекстКакСтрока+". "+ТекущаяСтрока.Предложение;
   КонецЦикла;
   Состояние("Получаю массив слов");
   МассивСлов = локРазложитьСтрокуВМассивПодстрок(ВесьТекстКакСтрока," ");
   ЭтотОбъект.Слова.Очистить();
   Сч=0;
   RegExp = Новый COMОбъект("VBScript.RegExp");
   RegExp.Global = Истина;
   RegExp.ignorecase=Ложь;
   RegExp.Pattern = "[\W|\d]";
   
   Для Каждого Слово из МассивСлов Цикл
       Сч=Сч+1;
       Состояние("Обрабатывается "+Сч+"-ое слово из "+МассивСлов.Количество());
       Слово= RegExp.Replace(Слово,"");
       Если СтрДлина(Слово)>2 Тогда
           //слова до 2 символов вообще игнорируем - ну их в жопу, в самом деле...
           //сначала ищем слово:
           ЕстьТакоеСлово = ЭтотОбъект.Слова.Найти(НРЕГ(Слово),"Слово");
           Если ЕстьТакоеСлово <> Неопределено Тогда
               ЕстьТакоеСлово.Частота=ЕстьТакоеСлово.Частота+1;
           Иначе
               ЕстьТакоеСлово = ЭтотОбъект.Слова.Добавить();
               ЕстьТакоеСлово.Слово = НРЕГ(Слово);
               ЕстьТакоеСлово.Частота = 1;
           КонецЕсли;
       КонецЕсли;
   КонецЦикла;
46 skunk
 
25.11.08
14:49

лев("мама анархия, папа стакан портвейна",  0) + прав("мама анархия, папа стакан портвейна", стрдлина("мама анархия, папа стакан портвейна") - 4)


ну или как функция


функция стрУдалить(стрИсточник, чисПервый, чисКоличество)
 вовзрат лев(стрИсточник, чисПервый - 1) + прав(стрИсточник, стрдлина(стрИсточник) - чисКоличество);
конецфункции

сообщить(стрУдалить("мама анархия, папа стакан портвейна", 1, 4));
47 skunk
 
25.11.08
14:50
это для 25...
48 Serg_1960
 
25.11.08
14:52
(46) сорри, расмешил... я не могу :)) "Из-за этой водки, некогда стакан вина выпить" :))
49 Serg_1960
 
25.11.08
14:53
Спасибо skunk за несколько минут смеха
50 skunk
 
25.11.08
14:55
хм ... и что смешного