Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с replace (https://javascript.ru/forum/misc/42234-pomogite-s-replace.html)

dima*** 18.10.2013 09:43

Помогите с replace
 
Помогите,пожалуйста,не получается с заменой.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Документ без названия</title>
	</head>
	
    <body>
	
<p style='display:none'>	
25 тур
 «Карца» 2:3 «Карабулак»
 «ДФШ Ангушт» (Назрань) 5:3 «Завод» (Назрань)
 «Беркут» (Альтиево) 6:2 «Али-Юрт»
 «Сунжа» (Троицкая) -:+ «Ветераны Ингушетии»
 «Мангуст» (Плиево) 0:3 «Олимп» (Назрань)
 «Барс» (Барсуки) 1:3 «Барт» (Новый Редант)
 «Сурхо» (Сурхахи) 1:2 «Энергетик» (Назрань)
 «Хамхи» (Слепцовск) – «КАЦТОРГ» (Экажево)
 «Вайнах-Строймаркет» (Насыр-Корт) – «Наьсар» (Насыр-Корт)

 26 тур
 «Вайнах-Строймаркет» (Насыр-Корт) 4:3 «Карабулак»
 «Наьсар» (Насыр-Корт) 1:6 «Энергетик» (Назрань)
 «КАЦТОРГ» (Экажево) 3:1 «Сурхо» (Сурхахи)
 «Хамхи» (Слепцовск) -:+ «Барт» (Новый Редант)
 «Мангуст» (Плиево) 7:3 «Барс» (Барсуки)
 «Олимп» (Назрань) +:- «Сунжа» (Троицкая)
 «Завод» (Назрань) +:- «Али-Юрт»
 «Карца» 7:4 «ДФШ Ангушт» (Назрань)
 «Беркут» (Альтиево) 5:4 «Ветераны Ингушетии»
</p>
<script>
   var a = document.getElementsByTagName('p')[0].innerHTML;
a = a.replace(/^\s*?\n\s*|\s*?\n\s*$/img,'').split(/\s*\n\s*/).join('\n');

reg=/\d+\sтур/ig;	

  var b=a.split(reg);
	
  c=a.match(reg);    

for (var i =0; i < b.length; i++){

//console.log(c[i-1]);
document.write(c[i-1]);

  b[i]=b[i].split(/\n/);

for (var j =0; j < b[i].length; j++){	

rega=/(«.+»\s\(.+\)|«.+»)\s(((\d|\+|\-)\:(\d|\+|\-))|\–)\s(«.+»\s\(.+\)|«.+»)/ig;
 
b[i][j]=b[i][j].match(rega);
if (b[i][j] != null){
//console.log(b[i][j]+'<br>');
//document.write(b[i][j]+'<br>');

d=[];
d[j]=b[i][j].replace(rega,'$1,$4,$2,$3');	

//console.log(d[j]+'<br>');
document.write(d[j]+'<br>');
}}}

</script>
</body>
</html>

ОлегА 18.10.2013 09:45

Цитата:

Сообщение от dima***
не получается с заменой

че надо то?:blink:

BETEPAH 18.10.2013 09:48

Цитата:

Сообщение от dima***
не получается с заменой

Что именно не получается? Что должно получиться? К чему столько регулярок?

dima*** 18.10.2013 09:48

Метод replace не работает.Где я неправильно делаю?

dima*** 18.10.2013 09:54

Должно получиться:
25 тур
«Карца»,«Карабулак»,2,3
«ДФШ Ангушт» (Назрань),«Завод» (Назрань),5,3
«Беркут» (Альтиево),«Али-Юрт»,6,2
«Сунжа» (Троицкая),«Ветераны Ингушетии»,-,+
«Мангуст» (Плиево),«Олимп» (Назрань),0,3
«Барс» (Барсуки),«Барт» (Новый Редант),1,3
«Сурхо» (Сурхахи),«Энергетик» (Назрань),1,2
«Хамхи» (Слепцовск),«КАЦТОРГ» (Экажево),,
«Вайнах-Строймаркет» (Насыр-Корт),«Наьсар» (Насыр-Корт),,

26 тур
«Вайнах-Строймаркет» (Насыр-Корт),«Карабулак»,4,3
«Наьсар» (Насыр-Корт),«Энергетик» (Назрань),1,6
«КАЦТОРГ» (Экажево),«Сурхо» (Сурхахи),3,1
«Хамхи» (Слепцовск),«Барт» (Новый Редант),-,+
«Мангуст» (Плиево),«Барс» (Барсуки),7,3
«Олимп» (Назрань),«Сунжа» (Троицкая),+,-
«Завод» (Назрань),«Али-Юрт»,+,-
«Карца»,«ДФШ Ангушт» (Назрань),7,4
«Беркут» (Альтиево),«Ветераны Ингушетии»,5,4

ОлегА 18.10.2013 11:44

Цитата:

Сообщение от dima***
Метод replace не работает

в каком месте то оно не работает, отформатируете код, что за каша? и покажите номер строки где у вас проблема

BETEPAH 18.10.2013 15:13

Цитата:

Сообщение от dima***
Метод replace не работает.Где я неправильно делаю?

вот здесь неправильно:
b[i][j]=b[i][j].match(rega); // здесь получаете массив
//...а у массива нет метода .replace
d[j]=b[i][j].replace(rega,'$1,$4,$2,$3');

соответственно, чтоб много кода не править, достаточно добавить [0] в 60й строке
d[j]=b[i][j][0].replace(rega,'$1,$4,$2,$3');

хотя мне по-прежнему кажется, что много лишнего в коде.

dima*** 18.10.2013 19:17

С 59 строки не работает код.

Ветеран,я что-то совсем запутался.
А тут почему получается replace?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
	<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Документ без названия</title>
	</head>
	
    <body>
	
<p style='display:none'>	
25 тур
 «Карца» 2:3 «Карабулак»
 «ДФШ Ангушт» (Назрань) 5:3 «Завод» (Назрань)
 «Беркут» (Альтиево) 6:2 «Али-Юрт»
 «Сунжа» (Троицкая) -:+ «Ветераны Ингушетии»
 «Мангуст» (Плиево) 0:3 «Олимп» (Назрань)
 «Барс» (Барсуки) 1:3 «Барт» (Новый Редант)
 «Сурхо» (Сурхахи) 1:2 «Энергетик» (Назрань)


 26 тур
 «Вайнах-Строймаркет» (Насыр-Корт) 4:3 «Карабулак»
 «Наьсар» (Насыр-Корт) 1:6 «Энергетик» (Назрань)
 «КАЦТОРГ» (Экажево) 3:1 «Сурхо» (Сурхахи)
 «Хамхи» (Слепцовск) -:+ «Барт» (Новый Редант)
 «Мангуст» (Плиево) 7:3 «Барс» (Барсуки)
 «Олимп» (Назрань) +:- «Сунжа» (Троицкая)
 «Завод» (Назрань) +:- «Али-Юрт»
 «Карца» 7:4 «ДФШ Ангушт» (Назрань)
 «Беркут» (Альтиево) 5:4 «Ветераны Ингушетии»
</p>

<script>
   var a = document.getElementsByTagName('p')[0].innerHTML;
a = a.replace(/^\s*?\n\s*|\s*?\n\s*$/img,'').split(/\s*\n\s*/).join('\n');

rega=/(«.+»\s\(.+\)|«.+»)\s(((\d|\+|\-)\:(\d|\+|\-))|\–)\s(«.+»\s\(.+\)|«.+»)/ig;

rd= a.match(rega);

for (var i=0;i<rd.length; i++){	

gf=[];
gf[i]=rd[i].replace(rega,'$1,$6,$4,$5');

document.write(gf[i]+'<br>');

//console.log(gf[i]+'<br>');
}
	

</script>


Мне нужно чтобы туры тоже выходили.

BETEPAH 18.10.2013 21:10

Цитата:

Сообщение от dima***
А тут почему получается replace?

Потому что здесь .replace применяется к тем элементам, у которых этот метод есть (строки), а выше применялся к тем элементам, у которых этого метода нет (массив) :)
Цитата:

Сообщение от dima***
Мне нужно чтобы туры тоже выходили.

А мне нужно... *чешет затылок, задумавшись

dima*** 18.10.2013 21:56

Цитата:

Сообщение от BETEPAH (Сообщение 277135)

А мне нужно... *чешет затылок, задумавшись

Я,ж не Всеселенском масштабе:)


Часовой пояс GMT +3, время: 04:19.