Название: Поиск параметров по имени Отправлено: Igors от Сентябрь 30, 2015, 09:23 Добрый день
Есть дерево параметров и др объект ссылается/использует параметры-листья по имени (xранит строку имен). Не мудрствуя лукаво сделал путь разделенный слешами Цитировать Object 1/Attributes/Irradiance/Color Работает, но во-первых, вбивать/иметь длинный путь неудобно, особенно учитывая что хранимых имен может быть несколько (пусть и немного). Тогда придется такЦитировать Object 1/Attributes/Irradiance/Color Object 2/Surface/Diffuse/Color ... Размазывать это в стиле MSVC не хочется, а иначе (в 1 строке) редактировать трудноватоВо-вторых, неуникальность имен может работать в плюс. Примеры Цитировать Color // все листья с именем Color Теперь имея полное имя листа надо проверить удовлетворяет ли он коротким именам (примеры выше). Как лучше всего это сделать?Diffuse/Color // все листья чье полное имя кончается на Diffuse/Color Object 1/../Color // все листья чье полное имя начинается на Object 1 и кончается на Color и.т.д Спасибо Название: Re: Поиск параметров по имени Отправлено: Racheengel от Октябрь 02, 2015, 23:46 Ну просто color написать это не очевидно, лучше бы */color, и аналогично object1/*/color.
Тогда можно просто определить индекс *, и если она найдена, разбть на 2 подстроки и матчить через startWith и endsWith. Ну, или рыгэкспами богомерзкими :) Название: Re: Поиск параметров по имени Отправлено: Igors от Октябрь 03, 2015, 07:59 Ну просто color написать это не очевидно, лучше бы */color, и аналогично object1/*/color. Ну это как минимум придется объяснять в документации. Думаю наоборот, может лучше даже .. (многоточие) убрать. Просто object 1/color. (заметим что пробелы в именах допустимы). Тогда получается довольно четко- полное имя есть серия имен разделенных слешами. Краткое имя считается совпадающим с полным если оно содержит последнее имя полного (имя листа) и любое кол-во имен имеющихся в полном и следующих в том же порядке что и в полном. Тогда можно просто определить индекс *, и если она найдена, разбть на 2 подстроки и матчить через startWith и endsWith. Каким образом? Ну, или рыгэкспами богомерзкими :) Название: Re: Поиск параметров по имени Отправлено: Racheengel от Октябрь 03, 2015, 11:52 Ну тогда у нас всего 2 варианта.
Сначала в любом случае ищем .. в имени. Если не нашли, матчим через endsWith ("Color"). Если нашли, режем короткое имя на 2 части, начало и конец, т.е. на Object 1 и Color. И матчим через startsWith("Object 1") и через endsWith ("Color"). |