Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.04.2013, 20:42
Интересующийся
Отправить личное сообщение для Batska Посмотреть профиль Найти все сообщения от Batska
 
Регистрация: 02.02.2013
Сообщений: 21

Разбить строку на массив по большим буквам
Добрый день, товарищи. Возникла такая вот проблема:

Есть случайная строка вводимая пользователем, которая содержит, к примеру, названия деревьев, например "СоснаЕль". Без пробелов, первая буква каждого слова - заглавная.

Есть массив, в котором хранятся записи такого вида: "Сосна-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);

Последний раз редактировалось Batska, 14.04.2013 в 21:06.
Ответить с цитированием
  #2 (permalink)  
Старый 14.04.2013, 21:41
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Правильно - так(обращаем внимание на 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('|') )

А вообще: учите регулярки, без них с текстом работать смысла особого нет.
__________________
29375, 35

Последний раз редактировалось Aetae, 14.04.2013 в 21:44.
Ответить с цитированием
  #3 (permalink)  
Старый 14.04.2013, 22:03
Интересующийся
Отправить личное сообщение для Batska Посмотреть профиль Найти все сообщения от Batska
 
Регистрация: 02.02.2013
Сообщений: 21

Сообщение от Aetae Посмотреть сообщение
Правильно - так(обращаем внимание на 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('|') )

А вообще: учите регулярки, без них с текстом работать смысла особого нет.
Огромное спасибо, соберусь и начну регулярки учить.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
необходими разделить строку на слова и положить слова в массив при помощи цикла for oneee Общие вопросы Javascript 5 05.09.2012 14:30
Как перевести json строку в js массив? Tek Общие вопросы Javascript 1 25.03.2012 17:11
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30
Помогите разбить строку входящих данных на 2 переменные freefly Общие вопросы Javascript 3 18.01.2010 01:56