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>
Пробовал и в кавычках ставить, и переменную делать маленькими букавками. Может переменную нужно как-то по особому вставлять в ваши египетские надписи?
|
|
10.03.2013, 20:26
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
фонарик,
Где у Вас полная исходная строка ?
вот её вставляете вместо document.getElementById('Text').innerHTML; //Это строка - аналог полученной нужной строки
|
|
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 вместо текста не работает
|
|
10.03.2013, 20:58
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Ага - разбежались...
Нун сразу было говорить и приводить примеры с несколькими поисками, - Сейчас нет смысла в данной переменной,
Кусок парсицо строго под "sarleon_recruit" - и для другой строки не сработает, посколь нун искать общую закономерность для любой такой строки при парсе текста
Поясню - Вы уверены что для любой другой переменной, arr2 - будет стоять cледом за за ней в квадратных скобках ?
И второе - выделите нужные переменные(для BUM) красным в исходном тексте
Последний раз редактировалось Deff, 10.03.2013 в 21:05.
|
|
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.
|
|
11.03.2013, 16:47
|
без статуса
|
|
Регистрация: 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>
|
|
11.03.2013, 18:46
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Мистер Deff, если случится великий потоп, вас спасать нужно будет обязательно Всё работает, всё проверил, всё правильно и лучше не придумать. Спасибо вам за добрые дела, ваши знания и опыт очень помогли мне, как хорошо что на этом форуме есть Вы
|
|
11.03.2013, 19:18
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
фонарик,
Перебор с благозвучием... минус в карму
|
|
13.03.2013, 00:12
|
Кандидат Javascript-наук
|
|
Регистрация: 23.02.2013
Сообщений: 127
|
|
Репка сморщилась от натугов, но никак не получается Ваш скрипт работает каким-то хитрым образом вдобавок. Переменную BUM которая обозначается в скрипте, никак обновить не получается, функцию вызвать по событию повторно (т.е после загрузки страницы), тоже не получается. Подскажите, как на данном примере сделать так, чтобы при клике на синий блок или на зеленый, в переменную BUM присваивалось значение id из-под нажатого элемента и производился соответствующий поиск ?
http://learn.javascript.ru/play/rftSF
|
|
13.03.2013, 00:56
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,108
|
|
фонарик,
onmousedown="alert(arraysFind(this.id))"
|
|
|
|