Вход | Регистрация
 

Избавиться от ковычек при загрузке с текстового файла

Избавиться от ковычек при загрузке с текстового файла
Я
   falselight
 
07.05.19 - 12:39
Если открыть файл, то там такие значения

"Гр.","00000010","Клиенты","","","","","","","","","",""

При обработке в коде они идут в двойных кавычках.
Как мне получить значения в одинарных кавычках?



    Текст = Новый ТекстовыйДокумент;
    Текст.Прочитать(ИмяФайлаЗагрузкиКонтрагентов);
    Для НомерСтроки = 1 по Текст.КоличествоСтрок() Цикл
        Строка        = Текст.ПолучитьСтроку(НомерСтроки);
        МассивКолонок = РазложитьСтрокуВМассивПодстрок(Строка, Разделитель);
        Для НомерКолонки = 1 по МассивКолонок.Количество() Цикл
            ТекущееЗначение = МассивКолонок[НомерКолонки-1];
            Если ТекущееЗначение = "Гр." Тогда
                //



Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",")
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока Истина Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока Истина Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
 
 
   falselight
 
1 - 07.05.19 - 12:40
(0+) По коду всегда будет, -

ТекущееЗначение = ""Гр."" - и не будет равно!!!!!
   dezss
 
2 - 07.05.19 - 12:42
СтрЗаменить
   Fish
 
3 - 07.05.19 - 12:42
(1) "ТекущееЗначение = ""Гр."" - и не будет равно!" - Что означает сия фраза?
   dezss
 
4 - 07.05.19 - 12:43
И вообще, зачем изобретать велосипед, если есть СтрРазделить?
   falselight
 
5 - 07.05.19 - 12:44
(3) Отладчиком встаю на
            Если ТекущееЗначение = "Гр." Тогда


ТекущееЗначение = ""Гр.""

то есть лишние кавычки!!!!!

Не пойму что не так делаю!
   Вафель
 
6 - 07.05.19 - 12:46
а вот в 77 был метод
   Fish
 
7 - 07.05.19 - 12:46
(5) Строковые значения в отладчике всегда отображаются в кавычках.
   Вафель
 
8 - 07.05.19 - 12:47
гугли csv
   dezss
 
9 - 07.05.19 - 12:47
(5) Да что ж такое.
Строка        = СтрЗаменить(Текст.ПолучитьСтроку(НомерСтроки),"""","");
   Вафель
 
10 - 07.05.19 - 12:48
тут самое интересное, что внутри строк могут быть запятые и кавычки
   1Сергей
 
11 - 07.05.19 - 12:49
ЗначениеИзСтрокиВнутр не предлагали ещё?
   dezss
 
12 - 07.05.19 - 12:49
(10) В теме про "Избавиться от ковычек". Про то, что они могут быть внутри строк нет ни слова.
   falselight
 
13 - 07.05.19 - 13:30
(6) Это выгрузка с 7.7 ?
(7) Там идет значение в двойных кавычках, и равенство не выполняется
Если ТекущееЗначение = "Гр." Тогда

(8) Я делал так давно, сейчас хочу сделать загрузку с файла

"Эл.","9998","ИП Зайцев Илья Иванович","ИП Зайцев Юрий Вячеславович","Основной договор","","","","","","","БН","1399"


(9) А так правильно будет?

(10) Да это точно!

(11) Буду пробовать.

(12) Ну так от куда знать. Что там навбивали. Выгрузка из 1с 7.7, справочников.
   Garykom
 
14 - 07.05.19 - 13:33
Вместо Разделитель = ","
Сделай Разделитель = ""","""
   falselight
 
15 - 07.05.19 - 13:34
(14) Буду пробовать разные варианты. Пока сам не понял в чем дело.
Из семерки выгрузил как обычно.
Но вот при загрузке что то не идет.
   HawkEye
 
16 - 07.05.19 - 13:38
(15) возвращайся на 7-ку )
   НЕА123
 
17 - 07.05.19 - 14:15
автор где-то врет.
я за (7).
   Garykom
 
18 - 07.05.19 - 14:26
(17) Он не врет, он просто не понимает.
   falselight
 
19 - 07.05.19 - 15:21
   d4rkmesa
 
20 - 07.05.19 - 15:25
(0)

// Функция формирует список значений из строки с разделителями.

//
// Параметры

//  СтрокаТекста - строка текста с разделителями
//  Разделитель - Строка, разделитель в тексте

//  НаличиеКавычек - Булево, есть ли кавычки вокруг значений в строке
//

// Возвращаемое значение:
//   СписокЗначений

//
Функция ИзСтрокиСРазделителями(СтрокаТекста, Разделитель, НаличиеКавычек, ТекстСТабуляциями = Ложь) Экспорт

    Если ТекстСТабуляциями Тогда
        НаличиеКавычек = Ложь;
        Разделитель = Символы.Таб;
    КонецЕсли; 
    
    СписокДанных = Новый СписокЗначений;
    
    ПрошлыйРазделитель = 0;
    КоличествоСимволов = 0;

    Для а=1 По СтрДлина(СтрокаТекста) Цикл
    
        Если Сред(СтрокаТекста,а,1) = Разделитель Тогда
        
            ВыбранноеЗначение = Сред(СтрокаТекста,(ПрошлыйРазделитель + 1),КоличествоСимволов);
            Если НаличиеКавычек Тогда
                ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2, (СтрДлина(ВыбранноеЗначение) - 2));
            КонецЕсли;
            Если ТекстСТабуляциями Тогда
                ВыбранноеЗначение = СтрЗаменить(ВыбранноеЗначение, (""""""), """");
                Если Сред(ВыбранноеЗначение, 1, 1) = """" Тогда
                    ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2);
                КонецЕсли;
                Если Сред(ВыбранноеЗначение, СтрДлина(ВыбранноеЗначение), 1) = """" Тогда
                    ВыбранноеЗначение = Сред(ВыбранноеЗначение, 1, (СтрДлина(ВыбранноеЗначение) - 1));
                КонецЕсли;
            КонецЕсли; 
            СписокДанных.Добавить(ВыбранноеЗначение);
            ПрошлыйРазделитель = а;
            КоличествоСимволов = 0;
            Продолжить;
        
        КонецЕсли;

        КоличествоСимволов = КоличествоСимволов + 1;
    
    КонецЦикла; 

    ВыбранноеЗначение = Сред(СтрокаТекста,(ПрошлыйРазделитель + 1));
    Если НаличиеКавычек Тогда
        ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2, (СтрДлина(ВыбранноеЗначение) - 2));
    КонецЕсли; 
    Если ТекстСТабуляциями Тогда
        ВыбранноеЗначение = СтрЗаменить(ВыбранноеЗначение, (""""""), """");
        Если Сред(ВыбранноеЗначение, 1, 1) = """" Тогда
            ВыбранноеЗначение = Сред(ВыбранноеЗначение, 2);
        КонецЕсли;
        Если Сред(ВыбранноеЗначение, СтрДлина(ВыбранноеЗначение), 1) = """" Тогда
            ВыбранноеЗначение = Сред(ВыбранноеЗначение, 1, (СтрДлина(ВыбранноеЗначение) - 1));
        КонецЕсли;
    КонецЕсли; 
    СписокДанных.Добавить(ВыбранноеЗначение);    

    Возврат СписокДанных;
КонецФункции
   hhhh
 
21 - 07.05.19 - 16:24
(19) ну так пробуй
Если ТекущееЗначение = """Гр.""" Тогда
   falselight
 
22 - 07.05.19 - 18:30
(21) То есть проверять на тройные кавычки по бокам?
Так воспринимает.
А это будет ли правильно?
   Garykom
 
23 - 07.05.19 - 19:27
(22) Поучиться бы вам батенька. Хотя бы про экранирование символов в строке узнать.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.