|
Работа со строками. | ☑ | ||
---|---|---|---|---|
0
AlexKulikov
16.10.17
✎
13:51
|
Добрый день, уважаемые форумчане.
Подскажите пожалуйста, как мне решить следующую задачу. Есть строка, например: Яблоко, Апельсин, Грузовик, 1247587, "1425,00", Улица, Фонарь, Аптека. С помощью типовой функции, где разделителем у меня выступает "," - я формирую массив подстрок, который я потом заношу в таблицу значений. <code> Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт </code> Вопрос, как мне обработать строку, чтобы у меня получалась одна подстрока вида "1425,00"? Очень надеюсь на Вашу помощь, с уважением Алексейю |
|||
1
Ёпрст
16.10.17
✎
13:54
|
(0) в качестве разделителя указывай ", "
|
|||
2
Лефмихалыч
16.10.17
✎
13:54
|
\"(\d+\,\d+)\"
|
|||
3
Ёпрст
16.10.17
✎
13:54
|
зпт+пробел, короче
|
|||
4
Волшебник
модератор
16.10.17
✎
13:54
|
с помощью регулярного выражения замени " , " (запятая внутри кавычек) на #,#
затем разложить в массив подстрок и затем обратная замена #,# на , |
|||
5
Лефмихалыч
16.10.17
✎
13:58
|
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = истина; RegExp.Global = Истина; RegExp.MultiLine = истина; RegExp.Pattern = "\"(\d+\,\d+)\""; Matches= RegExp.Execute("Яблоко, Апельсин, Грузовик, 1247587, ""1425,00"", Улица, Фонарь, Аптека."); Для Сч = 0 по Matches.Count()-1 Цикл Match = Matches.Item(Сч); Сообщить("""" + Match.Value+ """"); Прервать; КонецЦикла; |
|||
6
AlexKulikov
16.10.17
✎
14:24
|
(3) у меня строка формируется без пробелов, это я так коряво написал для наглядности, поэтому к сожалению Ваш вариант не подойдет. Входную строку я менять не имею права.
(5) Ругается на строчку RegExp.Pattern = "\"(\d+\,\d+)\"" - не опознанный оператор. Спасибо за код, мне теперь есть с чем работать). (4) (5) За наводку на "регулярные выражения" спасибо большое. Буду пробовать. |
|||
7
AlexKulikov
16.10.17
✎
16:25
|
С цифрами разобрался, спасибо большое за помощь!
Сейчас мучаюсь со следующей строкой: "Коррекция 'Проживание' от 30.04 - трансфер на счет ОЛТА Групп, 84526, 28/04/17 ИРИНА УСЕНКО УЖИНЫ!!!!" Соответственно, если строчка помещена в кавычки то это одна подстрока. Пытаюсь по аналогии с цифрами вместо "," - поставить "." , а потом уже функцией разбить на массив подстрок. Использую вот такое регулярное выражение: RegExp.Pattern = "(\w+\,\w+)\"""; Где \w насколько я понял, означает любой символ, то есть в моем случае это любая последовательность символов до запятой и после (включая цифры). Но к моему огромному сожалению, данный паттерн обрабатывает только цифры. Подскажите пожалуйста, в чем я ошибся? |
|||
8
Timon1405
16.10.17
✎
16:48
|
(7) что хотите из строки извлечь?
|
|||
9
AlexKulikov
16.10.17
✎
17:00
|
Есть строка, например:
Яблоко, Апельсин, Грузовик, 1247587, "1425,00", Улица, Фонарь,"Коррекция 'Проживание' от 30.04 - трансфер на счет ОЛТА Групп, 84526, 28/04/17 ИРИНА УСЕНКО УЖИНЫ!!!!", Аптека. Я хотел бы получить следующее, что если у меня в строке встречаются строки выделенные "", в данном случае это ("1425,00" и "Коррекция 'Проживание' от 30.04 - трансфер на счет ОЛТА Групп, 84526, 28/04/17 ИРИНА УСЕНКО УЖИНЫ!!!!") то в них я меняю "," на "." Дальше применяю функцию: Функция РазложитьСтрокуВМассивПодстрок(Знач Строка, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено, СокращатьНепечатаемыеСимволы = Ложь) Экспорт На данный момент, у меня обрабатывается только строки вида "1425,00". |
|||
10
Timon1405
16.10.17
✎
17:16
|
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = истина; RegExp.Global = Истина; RegExp.MultiLine = истина; RegExp.Pattern = """[^""]+"""; ВходСтрока = "Яблоко, Апельсин, Грузовик, 1247587, ""1425,00"", Улица, Фонарь,""Коррекция 'Проживание' от 30.04 - трансфер на счет ОЛТА Групп, 84526, 28/04/17 ИРИНА УСЕНКО УЖИНЫ!!!!"", Аптека."; Matches= RegExp.Execute(ВходСтрока); а =Matches.Count(); Для Сч = 0 по Matches.Count()-1 Цикл Match = Matches.Item(Сч); Сообщить("" + Match.Value); КонецЦикла; Дальше справитесь? |
|||
11
Лефмихалыч
16.10.17
✎
19:08
|
(6) надо голову в розетку включить и пересчитать кавычки
|
|||
12
Сияющий в темноте
16.10.17
✎
21:15
|
прощетнаписать парсер,который будет понимать разные кпвычки,чем пытаться мучать регэкспы,есть случаи,когда последние только всё усложняют
|
|||
13
Лефмихалыч
16.10.17
✎
21:32
|
(12) ты просто не умеешь их готовить
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |