![]() |
![]() |
![]() |
|
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
|
ну или как функция
|
|||
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
|
хм ... и что смешного
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |