Есть строки такого формата: машина // car , яблоко // apple.
Как вывести раздельно строку на русском и на латинице ?
То есть: 1) машина 2) car ; две строки.
Отсечение строк не подойдёт, ибо у всех реквизитов разная длин наименовании.
Может есть какая-либо функция поиска и вывода латиницы, и наоборот ?
(4) Это игра на предположениях. Предположениями пусть искусственный интеллект занимается. А в суровых реалиях строки "ручками набивают девочки и мальчики", и для получения корректного результат нужен качественный перебор.
А попытки экстраполировать видимые два примера на миллион невидимых - это вероятностная лотерея )))
(20) "им доживать свое" <> "уже в гробу", по крайней мере в моем понимании.
Я бы понял, если бы ими действительно пользовались "последние 3 калеки".
Есть множество крупных организаций, которые до сих пор используют конфигурации на обычных формах, ибо в них есть куча накопившихся за годы доработок, которые так просто скопом в новую конфу не перенести.
"им доживать свое" <> "уже в гробу", по крайней мере в моем понимании.
И такое бывает. ПО - это очень быстро развивающаяся штуковина. Если нет новых внедрений, а старые доживают свое, то вряд ли такое ПО можно назвать "живым". Это как офис 97, который еще где-то, полагаю. используется, но никто не будет ставить его на новый компьютер.
По поводу 8.2, то люди не переходят с решений на ней на 8.3 только потому, что они не уверены, что режим совместимости, реализованный платформой, будет работать правильно. Но они таким образом и конфигурацию уже давно не обновляют, т.к. современные решения (последние обновления даже УПП 1.3, которая еще поддерживается, но уже опубликовано сообщение о снятии с поддержки) требуют определенных версий платформы. А основная часть конфигураций на обычных формах уже снята с поддержки, что уж там говорить о 8.1 или 7.7. Сложно при таком положении назвать данные продукты "живыми". Они не растут, не размножаются, не эволюционируют - да, можно назвать их "живыми трупами", но не более..
(7) Я вам совсем о другом. Вы пытаетесь построить решение на поиске закономерностей видимых исходных данных, и предположить, что невидимы вами данные построены на тех же закономерностях.
Однако в задаче вам никто не говорил, что это строгий формат данных и он используется всегда.
К тому же автор ясно дал понять - ему надо определить латиницу. А не предположить визуально (к вопросу о сосне).
(9) автор вообще не дал понять, каков должен быть результат, хотя бы исходя из предоставленного примера.
В качестве примера приведена одна строка или две? Как минимум, что делать с возможными разделителями, запятыми пробелами и т.п.?
(10) Согласен, но так нагляднее. В любом случае основное здесь - это полный перебор символов и их анализ.
А сам метод определения того - латинский это символ или кришнаитский - просто вопрос религии ))
&НаКлиенте
Процедура Вариант1(_Символы)
ТекДата = ТекущаяУниверсальнаяДатаВМиллисекундах();
ЛатинскиеСимволы = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz";
Для Сч = 1 По 1000000 Цикл
Позиция = Найти(ЛатинскиеСимволы, _Символы[Сч - 1]);
ЭтоЛатиница = Позиция > 0
КонецЦикла;
Сообщить("Вариант 1: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - ТекДата) + "мс");
КонецПроцедуры
&НаКлиенте
Процедура Вариант2(_Символы)
ТекДата = ТекущаяУниверсальнаяДатаВМиллисекундах();
Для Сч = 1 По 1000000 Цикл
Код = КодСимвола(_Символы[Сч - 1]);
ЭтоЛатиница = (Код >= 65 И Код <= 90) ИЛИ (Код >= 97 И Код <= 125);
КонецЦикла;
Сообщить("Вариант 2: " + (ТекущаяУниверсальнаяДатаВМиллисекундах() - ТекДата) + "мс");
КонецПроцедуры
&НаКлиенте
Процедура Тест(Команда)
ГСЧ = Новый ГенераторСлучайныхЧисел(1000000);
Для НомерПопытки = 1 По 3 Цикл
_Символы = Новый Массив;
Для Сч = 1 По 1000000 Цикл
_Символы.Добавить(Символ(ГСЧ.СлучайноеЧисло(1, 200)));
КонецЦикла;
Вариант1(_Символы);
Вариант2(_Символы);
КонецЦикла;
КонецПроцедуры
Показать
Получилось так:
Вариант 1: 10 033мс
Вариант 2: 9 364мс
Вариант 1: 9 145мс
Вариант 2: 9 361мс
Вариант 1: 9 078мс
Вариант 2: 9 323мс
Но меня удивило, что множественное условие "(Код >= 65 И Код <= 90) ИЛИ (Код >= 97 И Код <= 125)" отрабатывает так медленно, сопоставимо с функцией "Найти(ЛатинскиеСимволы, _Символы[Сч - 1])". А с "КодСимвола(_Символы[Сч - 1])" работает еще медленнее, что вообще странно.
не совсем понял какой нужен конечный результат, но
СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок или СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов
а затем
СтроковыеФункцииКлиентСервер.ТолькоЛатиницаВСтроке
Результат = СтрРазделить(СтрокиСоСловами, "/,", Ложь);
Флаг = Ложь;
Русское = "";
Для Каждого Ст ИЗ Результат Цикл
Если Флаг Тогда Сообщить(СтрШаблон("%1 = %2", Русское, Ст)
Иначе Русское = Ст
КонецЕсли;
флаг = не флаг;
КонецЦикла;
Показать
Будет выведено что-то типа
Машина = Car
Яблоко = Apple
В 8.2. для этих функций есть БСП, методами которой можно воспользоваться. Только 8.2 уже в гробу вместе с обычными формами, поэтому я даже не подскажу, какими точно, но они отличаются от приведенных выше.
(21) для тех, кто не способен включить мозг, иногда что-то может показаться. Как в трудах Канта для человека, который плохо ориентируется в языковых возможностях и смысле, который язык оставляет в тексте.
Автор, вообще мастер постановки задач, что в итоге ему конкретно нужно уже додумывают сами, может ему вообще нужно тупо отделить русские слова от английских, или наоборот, если так, то можно посмотреть в сторону регулярок, например, выражение для поиска английских слов: [a-zA-Z]+
Лучше воспользоваться всё же разделителями – на практике наименования чего бы то ни было на русском языке могут содержать латинские символы: бренды, маркировки, размеры и т.п.
(24) Насколько я понимаю автора - это теоретическая задача на умение работать со строками. А не прикладная. Да, он упоминает про реквизиты наименования, но все равно практический смысл в задаче отсутствует напрочь. В том числе по той же причине, которую вы и указываете.
Предполагаю, конечно, что вопрос стоит в необходимости мультиязычности данных. Но вряд ли это решается через разбиение наименования...
(27) Автор, вообще, молча отказывается что-либо комментировать.
Только задает вопросы не по первоначальной теме (как в чате), вместо того, чтобы следовать правилам и создать отдельную по интересующему вопросу.
(28) Последнее сообщение по поводу УПП, которое я видел, собираются и дальше поддерживать. Как раз по причине, что еще достаточно большое количество организаций ее использует.
Что касается версий платформ, то в моем понимании, они являются "живыми" пока их использует большое количество пользователей, пусть даже и в режиме совместимости. Т.е. 7.7, ну да, можно назвать "полумертвым", 8.1 "отмирающим" видом, а вот 8.2 я бы поостерегся еще, так называть. Есть куча отраслевых решений, которые основаны на 8.2 (обычные формы, перетекшие из 8.1) и до сих пор поддерживаются (обновляются), пусть и в режиме совместимости платформы.
Как по мне, это так же, как назвать "(живыми) трупами" всех пенсионеров - большинство не растет, не размножается и уж точно не эволюционирует.
Как по мне, это так же, как назвать "(живыми) трупами" всех пенсионеров
Ну так государство, и, особенно, пенсионные фонды, которые на этих отраслевых решениях работают (хотя наше давно уже на базе БП 3.0), к пенсионерам примерно так и относятся. активно ожидая вестей о безвременной кончине клиента (у них там модели статистически по срокам дожития - будь здоров, а реклама алкоголя и табака - одна из основных строк расходов).
Можно регулярными выражениями, будет быстрее и точнее. Главное подобрать шаблон под свою задачу.
RegExp = Новый COMОбъект("VBScript.RegExp");// создаем объект для работы с регулярными выражениями
RegExp.MultiLine = Истина; // истина — текст многострочный, ложь — одна строка
RegExp.Global = Истина; // истина — поиск по всей строке, ложь — до первого совпадения
RegExp.IgnoreCase = Истина; // истина — игнорировать регистр строки при поиске
Шаблон = .........; //шаблон проверки
RegExp.Pattern = Шаблон; // шаблон (регулярное выражение)
Если Не RegExp.Test(ПроверяемаяСтрока) Тогда
КонецЕсли;
(42) Ну с COMОбъектом можно просто скопировать... а регулярки нужно регулярно курить :)
Зато 1-работает быстро,
2-задачу автора решает спокойно,
3-на будущее куча возможностей.
(41) Регулярки - сила. Для вдумчивого курения советую добавить себе в закладки сайт: https://regex101.com/ Это онлайн отладчик регулярных выражений. Красиво, цветом подсвечивает совпадения и т.п. Решал задачу поиска телефонных номеров в комментариях - этот сайт просто выручил.