Разбить строку на массив по большим буквам
Добрый день, товарищи. Возникла такая вот проблема:
Есть случайная строка вводимая пользователем, которая содержит, к примеру, названия деревьев, например "СоснаЕль". Без пробелов, первая буква каждого слова - заглавная. Есть массив, в котором хранятся записи такого вида: "Сосна-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); |
Правильно - так(обращаем внимание на table):
var table = { 'Ель': 13, 'Сосна': 2223, 'Береза': 122, 'Дуб': 2687 } var subs = 'ДубБереза'; var arr = subs.match(/[А-ЯЁA-Z][а-яёa-z]+/g), i = arr.length; while(i--) arr[i] = table[arr[i]] || 0; alert( arr.join('|') ) А вообще: учите регулярки, без них с текстом работать смысла особого нет. |
Цитата:
|
Часовой пояс GMT +3, время: 06:13. |