|
Разложение строки | ☑ | ||
|---|---|---|---|---|
|
0
quazare
28.07.09
✎
07:23
|
Народ, есть ли простой способ разложить строку на 2 подстроки, имея разделителем такую конструкцию из 3-х символов " ) " - 2 пробела и скобка?
|
|||
|
1
ТелепатБот
гуру
28.07.09
✎
07:23
|
||||
|
2
Pashkaa
28.07.09
✎
07:30
|
В типовых есть Функция СтрокуВМассив, где можно задать твою строку и разделитель, на выходе получишь Массив строк
|
|||
|
3
Нуф-Нуф
28.07.09
✎
07:34
|
находишь позицию вхождения Найти(ТвояСтрока," ) ") и уже от полученной цифры скачешь Лев,Прав,сред
|
|||
|
4
AlStorm
28.07.09
✎
07:34
|
Да блин, это ж вообще элементарно. Ищешь в строке " ( ". Зпоминаешь позицию. Все, что до - первая подстрока, после- вторая.
Как говорил Герберт Шилдт, ничто так не учит программированию, как задачи со строками. |
|||
|
5
ИначеЕсли
28.07.09
✎
10:09
|
Разбор строки
ТелепатБот, ответь |
|||
|
6
Rebelx
28.07.09
✎
10:15
|
// Пробразует переданную строку с разделителями в массив значений
// Корректно обрабатывает вложенные строки // // Параметры: // Значение - строка с разделителями, значения из которой необходимо преобразовать в массив // Разделитель - определяет разделитель значений // // Возвращаемое значение: // Массив значений, выделенных из строки // Функция ИзСтрокиСРазделителями(Знач Значение, Знач Разделитель = ",") Экспорт Если СтрДлина(Разделитель) = 0 тогда ВызватьИсключение("Ошибка при вызове функции (ИзСтрокиСРазделителями): Несоответствие типов (параметр номер '2')"); КонецЕсли; ДлинаРазделителя = СтрДлина(Разделитель); Результат = Новый Массив(); Пока СтрДлина(Значение) > 0 Цикл ПозицияРазделителя = Найти(Значение, Разделитель); Если ПозицияРазделителя = 0 тогда Результат.Добавить(СокрЛП(Значение)); Прервать; Иначе КоличествоКавычек = СтрЧислоВхождений(Лев(Значение, ПозицияРазделителя - 1), """"); Пока (Цел(КоличествоКавычек / 2) * 2) <> КоличествоКавычек Цикл НоваяПозицияРазделителя = Найти(Сред(Значение, ПозицияРазделителя + ДлинаРазделителя), Разделитель); Если НоваяПозицияРазделителя > 0 тогда ПозицияРазделителя = ПозицияРазделителя + НоваяПозицияРазделителя - 1 + ДлинаРазделителя; Иначе Результат.Добавить(СокрЛП(Значение)); Перейти ~ВыходИзПроцедуры; КонецЕсли; КоличествоКавычек = СтрЧислоВхождений(Лев(Значение, ПозицияРазделителя - 1), """"); КонецЦикла; Результат.Добавить(СокрЛП(Лев(Значение, ПозицияРазделителя - 1))); Значение = Сред(Значение, ПозицияРазделителя + ДлинаРазделителя); КонецЕсли; КонецЦикла; ~ВыходИзПроцедуры: Возврат Результат; КонецФункции |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |