Добрый день, товарищи. Возникла такая вот проблема:
Есть случайная строка вводимая пользователем, которая содержит, к примеру, названия деревьев, например "СоснаЕль". Без пробелов, первая буква каждого слова - заглавная.
Есть массив, в котором хранятся записи такого вида: "Сосна-2223". Т.е. название дерева и его номер, разделенные знаком "-".
Необходимо, чтобы программа заменила все названия деревьев их номерами, разделив каждое дерево "|".
Я старался сделать эту штуку по принципу, что пока строка не станет пустой, буду искать совпадения с каждой частью (до - ) каждого элемента массива, удаляя эти куски до тире из введенной пользователем строки и записывая порядковые номера в новую переменную.
Но, как я и сам понимаю, мой вариант поиска не подходит, т.к. я ищу по 1 единственному массиву, и действия выполняются с одним элементом.
Но я регулярок просто не знаю, м.б., с их помощью можно реализовать.
Короче, если кто-то может, помогите, пожалуйста.
Или кто-то, м.б., подскажет, как разбить по большим буквам строку на массив, чуть что можно делать проверку:
a==a.toUpperCase, заменить а на (а + '|'), а потом сплитом по | на массив. Проблема в цикле самом, я в JS новичок.
var table = {
el:'Дуб-13',
sosna:'Сосна-2223',
bereza:'Береза-122',
dub:'Дуб-2687'
}
var subs = 'ДубБереза'; //Вводится пользователем
var subD;
var stringD;
var workSubst = subs;
var workSubst2 = '';
while (workSubst != '') {
for (var element in table) {
if (subs.indexOf(table[element].substring(0,table[element].indexOf('-'))) >= 0) {
stringD = workSubst;
subD = table[element];
stringD = stringD.substring(0, stringD.indexOf(subD)) + stringD.substring(stringD.indexOf(subD) + subD.length); //удаляю подстроку
workSubst = stringD;
workSubst2 = table[element].substring(table[element].indexOf('-') + 1 ) + '|';
break;
}
}
}
alert (workSubst2);