|
Помощь в чтении строки и разложения ее в массив | ☑ | ||
---|---|---|---|---|
0
serg-lom89
22.05.15
✎
14:31
|
подскажите как распарсить строку что бы получился массив
вот строка 2015-05-12T15:47:36 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:002015-05-12T15:48:40 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:002015-05-12T15:48:54 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:002015-05-14T14:28:СергейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:00 что бы получился массив 2015-05-12T15:47:36 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 2015-05-12T15:47:36 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 2015-05-12T15:47:36 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 Примерно такой массив Подскажите а то что не могу допереть.как привязаться к двум разделителям что ли? |
|||
1
sergeev-ag-1977
22.05.15
✎
14:34
|
Есть стандартная процедура , кажется, РазложитьСтрокуВМассив
|
|||
2
Лефмихалыч
22.05.15
✎
14:38
|
(0) ваша строка - гогно. В ней не хватает разделителей.
Между алексеем и документом должен быть разделитель, а его нет. Перед ГУИДом тоже нет разделителя, равно как и - после |
|||
3
Tateossian
22.05.15
✎
14:39
|
(2) В данном случае - отсутствие разделителей и есть разделитель:)
|
|||
4
Лефмихалыч
22.05.15
✎
14:42
|
(3) нет ножек - нет варенья. Всё просто
|
|||
5
anatoly
22.05.15
✎
14:44
|
(1) ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок()
|
|||
6
Fish
22.05.15
✎
14:45
|
(0) Последовательность действий такова:
1) Оторвать руки изобретателю такой строки; 2) Пришить их обратно и заставить переделать на нормальную строку с разделителями; 3) Воспользоваться функцией из типовых. 4) Наслаждаться. |
|||
7
НЕА123
22.05.15
✎
14:50
|
(2)+1
Стр = СтрЗаменить(СтрКал,"."Символы.ПС); к=1; Пока к < СтрЧислоСтрок(Стр); ЭлМасс= СтрПолучитьСтроку(Стр,к)+ СтрПолучитьСтроку(Стр,к+1)+ СтрПолучитьСтроку(Стр,к+2)+ СтрПолучитьСтроку(Стр,к+3); к = к+4; |
|||
8
Fragster
гуру
22.05.15
✎
14:56
|
есть мнение, что это извлечениетекста или что-то подобное так из какой-то XML содержимое выдрало
|
|||
9
KUBIK
22.05.15
✎
14:58
|
Стр="2015-05-12T15:47:36 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:002015-05-12T15:48:40 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:002015-05-12T15:48:54 АлексейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:002015-05-14T14:28:СергейDocument.РеализацияТоваровУслугdab219bf-c297-11e4-b826-0025909a5067Реализация товаров и услуг ААС01494800 от 04.03.2015 20:57:00";
Если конструкция в строке регулярная, то можно так попробовать: Массив=Новый Массив; Поз=0; Поз=Найти(Стр,"от"); ПромСтр=Сред(Стр,1,Поз+22); //22 это длина "от ДД.ММ.ГГ ЧЧ:ММ:СС" Массив.Добавить(ПромСтр); Стр=Сред(Стр,Поз+23); и т.д. |
|||
10
Fragster
гуру
22.05.15
✎
14:59
|
только почему не DocumentRef?
|
|||
11
DS
22.05.15
✎
15:01
|
Судя по "2015-05-12T15:47:36 Алексей..." и "2015-05-14T14:28:Сергей..." очень регулярная...
|
|||
12
НЕА123
22.05.15
✎
15:03
|
(11)
если с пробелами, то, кажись можно... Поз=Найти(Стр," от "); |
|||
13
KUBIK
22.05.15
✎
15:05
|
(12) +1
так надо Тогда так ПромСтр=Сред(Стр,1,Поз+23);//23 это длина " от ДД.ММ.ГГ ЧЧ:ММ:СС" |
|||
14
KUBIK
22.05.15
✎
15:07
|
(12) А то вдруг: "МотяDocument....." :))))
|
|||
15
Кирпич
22.05.15
✎
15:13
|
регулярные выражения спасут автора
|
|||
16
serg-lom89
22.05.15
✎
15:14
|
Ну да блин..строки не регулярные..как бы тут тока привязка или Document. или T
|
|||
17
Лефмихалыч
22.05.15
✎
15:14
|
(15) не спасут
|
|||
18
Timon1405
22.05.15
✎
15:15
|
Перем RegExp;
Функция РазложитьКакНадо(ВходСтрока) Паттерн = "\s\d\d:\d\d:\d\d"; RegExp.Pattern = Паттерн; МассивВыход = Новый Массив; МассивНужныхПробелов= RegExp.Execute(ВходСтрока); ТекИндексПервойБуквыСлова=1; Для каждого ЭлементМассива Из МассивНужныхПробелов Цикл ТекЭлем = Сред(ВходСтрока,ТекИндексПервойБуквыСлова,ЭлементМассива.FirstIndex+1-ТекИндексПервойБуквыСлова); ТекИндексПервойБуквыСлова = ЭлементМассива.FirstIndex+10; МассивВыход.Добавить(ТекЭлем); КонецЦикла; Возврат МассивВыход; КонецФункции RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.IgnoreCase = Истина; RegExp.Global = Истина; RegExp.MultiLine = Истина; |
|||
19
НЕА123
22.05.15
✎
15:16
|
ээээ....
(7)сторно ибо бредятина полная. |
|||
20
alex74
22.05.15
✎
15:17
|
Не каждую строку можно (и нужно) разлагать в массив
|
|||
21
Лефмихалыч
22.05.15
✎
15:17
|
(18) это и без регэкспа можно. Но даже регэксп не сможет в общем случае Алексея от Document отодрать, простите за слэнг
|
|||
22
Кирпич
22.05.15
✎
15:19
|
(21) чо эт не может. очень даже может
|
|||
23
Timon1405
22.05.15
✎
15:23
|
(21) не знаю, что там далее в планах у автора делать с Алексеем и Documentом, но исходное ТЗ мои 10 строчек покрывают)
|
|||
24
hhhh
22.05.15
✎
15:25
|
здесь как раз Document. - это разделитель.
|
|||
25
Buster007
22.05.15
✎
15:41
|
по знаку "-" можно разложить без проблем.
|
|||
26
Кирпич
22.05.15
✎
16:08
|
Функция ПолноеРазложение(ВходСтр)
МассивВыход = Новый Массив; RegExp = Новый COMОбъект("VBScript.RegExp"); RegExp.IgnoreCase = Истина; RegExp.Global = Истина; RegExp.MultiLine = Истина; RegExp.Pattern = "(\d{4}\-\d{2}\-\d{2})([\S ]+?)(\d{2}\.\d{2}\.\d{4})"; МассивСтрок = RegExp.Execute(ВходСтр); Для Каждого ЭлементМассива Из МассивСтрок Цикл МассивВыход.Добавить(ЭлементМассива.Value); КонецЦикла; RegExp = ""; Возврат МассивВыход; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |