Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 10.03.2013, 19:32
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Никак не получается вставить переменную в ваше заклинание, присвоил переменной BUM значение "sarleon_recruit", которое проходило свидетелем в вашем заклинании, и вставил переменную вместо "sarleon_recruit", но так почему-то не работает:
<script>
var BUM = "sarleon_recruit"
var str = document.getElementById('Text').innerHTML; //Это строка  - аналог получения нужной строки
var arr2=str.split(/[\s\S]*?((?:BUM)[\s\S]*?\])/img)[1].split(/\[|\]/img)[1].split(",");arr2.pop();

alert(arr2); //Массив в квадратных скобках за "sarleon_recruit";

var arr3=str.split(/[\s\S]*?((?:BUM)[\s\S]*?(?=0x000))/img)[1].split(/(strength)/img);arr3.splice(0,1);
arr3 = arr3.join('').split(/knows_/)[0].split(/[,|]/img);arr3.pop();

alert(arr3); //Массив от strength до "knows_";

var arr4=str.split(/[\s\S]*?((?:BUM)[\s\S]*?(?=0x000))/img)[1].split(/(knows_.*?)[|,]/img);arr4.splice(0,1);
arr4=arr4.join(',').split(/,+/img);arr4.pop();

alert(arr4) //Массив с "knows_";
</script>
Пробовал и в кавычках ставить, и переменную делать маленькими букавками. Может переменную нужно как-то по особому вставлять в ваши египетские надписи?
Ответить с цитированием
  #12 (permalink)  
Старый 10.03.2013, 20:26
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

фонарик,
Где у Вас полная исходная строка ?
вот её вставляете вместо document.getElementById('Text').innerHTML; //Это строка - аналог полученной нужной строки
Ответить с цитированием
  #13 (permalink)  
Старый 10.03.2013, 20:56
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Сообщение от Deff Посмотреть сообщение
<div id="Text">
sdffffffffffffffff [ "sarleon_recruit", "Sarleon Recruit", "Sarleon Recruits", tf_guarantee_boots|tf_guarantee_armor, 0, 0, fac_neutral,
 [ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warhammer, itm_military_pick, itm_sickle, itm_dagger,],
 strength(15)|agility(5)|intellect(4)|charisma(14)| level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50) |wp_archery(200)|wp_crossbow(20)|wp_throwing(2), knows_trade_12|knows_prisoner_management_1|knows_i nventory_management_2|knows_shield_10|knows_weapon _master_1|knows_power_throw_10|knows_ironflesh_1,
 0x0000000000000001124000000020000000000000001c0080 0000000000000000, 0x00000000000062c76ddcdf7feefbffff00000000001efdbc 0000000000000000, 0,
 52 ]sdfffffdsffffffffffff
</div>

<script>
var BUM = "sarleon_recruit"
var str = document.getElementById('Text').innerHTML; //Это строка  - аналог получения нужной строки
var arr2=str.split(/[\s\S]*?((?:BUM)[\s\S]*?\])/img)[1].split(/\[|\]/img)[1].split(",");arr2.pop();

alert(arr2); //Массив в квадратных скобках за "sarleon_recruit";

var arr3=str.split(/[\s\S]*?((?:BUM)[\s\S]*?(?=0x000))/img)[1].split(/(strength)/img);arr3.splice(0,1);
arr3 = arr3.join('').split(/knows_/)[0].split(/[,|]/img);arr3.pop();

alert(arr3); //Массив от strength до "knows_";

var arr4=str.split(/[\s\S]*?((?:BUM)[\s\S]*?(?=0x000))/img)[1].split(/(knows_.*?)[|,]/img);arr4.splice(0,1);
arr4=arr4.join(',').split(/,+/img);arr4.pop();

alert(arr4) //Массив с "knows_";
</script>
Вот такой расклад с переменной BUM вместо текста не работает
Ответить с цитированием
  #14 (permalink)  
Старый 10.03.2013, 20:58
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ага - разбежались...
Нун сразу было говорить и приводить примеры с несколькими поисками, - Сейчас нет смысла в данной переменной,
Кусок парсицо строго под "sarleon_recruit" - и для другой строки не сработает, посколь нун искать общую закономерность для любой такой строки при парсе текста
Поясню - Вы уверены что для любой другой переменной, arr2 - будет стоять cледом за за ней в квадратных скобках ?
И второе - выделите нужные переменные(для BUM) красным в исходном тексте

Последний раз редактировалось Deff, 10.03.2013 в 21:05.
Ответить с цитированием
  #15 (permalink)  
Старый 10.03.2013, 22:05
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Структура везде одинаковая, относительно конечно. Есть например переменная BUM со значением, пусть это будет все тот же "sarleon_recruit". Это значение уникальное и нигде больше не повторяется. Перед этим значением будет пробел и квадратная скобка:
[ "sarleon_recruit" - т.е это стандартное начало абзаца. Далее за этим началом через запятую идет разное количество переменных, строка заканчивается запятой, затем новая строка и там будут переменные itm_ они все в квадратных скобках. Т.е будет так:

[ "sarleon_recruit", переменная, переменная цифра значение и тп,
[itm_ankle_boots, itm_leather_jacket, и так далее]


затем будет новая строка со значениями всегда определенного количества и названия переменных, которые закончатся запятой:
"strength(15)|agility(5)|intellect(4)|charisma(14) | level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50) |wp_archery(200)|wp_crossbow(20)|wp_throwing(2)",

а после последней переменной wp_throwing идут переменные knows_ разного количества и заканчиваются на 0x00, получается всё в итоге так:

[ "sarleon_recruit", переменная, переменная цифра значение и тп,
[itm_ankle_boots, itm_leather_jacket, и так далее],
strength(15)|agility(5)|intellect(4)|charisma(14)| level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50) |wp_archery(200)|wp_crossbow(20)|wp_throwing(2), knows_trade_12|knows_prisoner_management_1|knows_i nventory_management_2|knows_shield_10|knows_weapon _master_1 и так далее,
0x00

Числовые значения всегда разные от 1 до 3х порядков;
Первый массив должен содержать переменные itm_
второй - начинается с переменной strength, заканчиваясь перед переменными knows_
третий - переменные knows_

Прошу прощения что не сообщил о разности поиска, я думал разницы не будет, что "sarleon_recruit" что "Дядя_вася". Получается, что в переменную BUM будут присваиваться строковые значения, разные. Например "adventurer" или "military_horse_bowman". Не знаю ответил ли я на ваш вопрос, если бы я понимал хотябы общий принцип как вы это делаете, возможно не получилось бы так, что потребуются какие-то доработки

Последний раз редактировалось фонарик, 10.03.2013 в 22:09.
Ответить с цитированием
  #16 (permalink)  
Старый 11.03.2013, 16:47
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<div id="Text">
sdffffffffffffffff [ "sarleon_recruit", "Sarleon Recruit", "Sarleon Recruits", tf_guarantee_boots|tf_guarantee_armor, 0, 0, fac_neutral,
 [ itm_ankle_boots, itm_leather_jacket, itm_linen_tunic, itm_leather_vest, itm_cudgel, itm_warhammer, itm_military_pick, itm_sickle, itm_dagger,],
 strength(15)|agility(5)|intellect(4)|charisma(14)| level(1), wp_one_handed(50)|wp_two_handed(50)|wp_polearm(50) |wp_archery(200)|wp_crossbow(20)|wp_throwing(2), knows_trade_12|knows_prisoner_management_1|knows_i nventory_management_2|knows_shield_10|knows_weapon _master_1|knows_power_throw_10|knows_ironflesh_1,
 0x0000000000000001124000000020000000000000001c0080 0000000000000000, 0x00000000000062c76ddcdf7feefbffff00000000001efdbc 0000000000000000, 0,
 52 ]sdfffffdsffffffffffff
</div>



<script>
function  arraysFind (BUM) {
var Out =[];
var str = document.getElementById('Text').innerHTML; //Это строка  - аналог получения нужной строки
var valid = str.indexOf(BUM);
if(valid==-1) return false;
str = str.substring(valid);//alert('>'+str)
var arr1=str.split(/\[|\]/img)[1].split(",");arr1.pop();

Out.push(arr1);//Массив в квадратных скобках за BUM;

var arr2=str.split(/0x000/img)[0].split(/(strength)/img);arr2.splice(0,1);
arr2 = arr2.join('').split(/knows_/)[0].split(/[,|]/img);arr2.pop();

Out.push(arr2); //Массив от strength до "knows_";

var arr3=str.split(/0x000/img)[0].split(/(knows_.*?)[|,]/img);arr3.splice(0,1);
arr3=arr3.join(',').split(/,+/img);arr3.pop();

Out.push(arr3); //Массив с "knows_";
  return Out;
}
var BUM = "sarleon_recruit";

var OutArr = arraysFind (BUM);
alert(OutArr[0])
alert(OutArr[1])
alert(OutArr[2])
</script>
Ответить с цитированием
  #17 (permalink)  
Старый 11.03.2013, 18:46
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Мистер Deff, если случится великий потоп, вас спасать нужно будет обязательно Всё работает, всё проверил, всё правильно и лучше не придумать. Спасибо вам за добрые дела, ваши знания и опыт очень помогли мне, как хорошо что на этом форуме есть Вы
Ответить с цитированием
  #18 (permalink)  
Старый 11.03.2013, 19:18
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

фонарик,
Перебор с благозвучием... минус в карму
Ответить с цитированием
  #19 (permalink)  
Старый 13.03.2013, 00:12
Кандидат Javascript-наук
Отправить личное сообщение для фонарик Посмотреть профиль Найти все сообщения от фонарик
 
Регистрация: 23.02.2013
Сообщений: 127

Репка сморщилась от натугов, но никак не получается Ваш скрипт работает каким-то хитрым образом вдобавок. Переменную BUM которая обозначается в скрипте, никак обновить не получается, функцию вызвать по событию повторно (т.е после загрузки страницы), тоже не получается. Подскажите, как на данном примере сделать так, чтобы при клике на синий блок или на зеленый, в переменную BUM присваивалось значение id из-под нажатого элемента и производился соответствующий поиск ?
http://learn.javascript.ru/play/rftSF
Ответить с цитированием
  #20 (permalink)  
Старый 13.03.2013, 00:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,108

фонарик,

onmousedown="alert(arraysFind(this.id))"
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярные выражения alex2012 Общие вопросы Javascript 5 23.02.2013 19:49
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
Регулярные выражения vivalaakam Общие вопросы Javascript 6 08.02.2012 09:41
нежадные регулярные выражения KOLANICH Общие вопросы Javascript 2 12.12.2010 01:08
Функции поиска и замены строк или регулярные выражения? Armen Общие вопросы Javascript 1 01.01.2010 12:35