Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.12.2021, 00:41
Аспирант
Отправить личное сообщение для mik888em Посмотреть профиль Найти все сообщения от mik888em
 
Регистрация: 21.06.2020
Сообщений: 56

Как в txt файле оставить только 2 строчки после определенного слова выше?
Есть txt файл , вот его содержимое:
===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============


Вопрос:
Как джаваскриптом оставить только 2 строчки которые идут после строчки, в которой есть "фраза": gk qwerty ?

См скрин:
https://prnt.sc/22rtp3f

И эти две строчки поставить через двоеточие?

Должно остаться в txt файле вот так:
с h5vvh5vh5vh5:s bj65v54gc4g
c vg545v4gv45gv5g4v5g4:s jb6jb6jb6j
Ответить с цитированием
  #2 (permalink)  
Старый 13.12.2021, 05:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 1,674

const txt = 
`===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============`;

const outar = [];
const txtar = txt.split('\n');
for (let i = 0; i < txtar.length-2; ) {
	if (txtar[i++].includes('gk qwerty'))
		outar.push(txtar[i++]+':'+txtar[i++]);	
}
const txtout = outar.join('\n');
alert(txtout);


ЗЫ Не было сказано, что делать в случаях, если 'gk qwerty' встречается в двух строках подряд или через строку или встречается в предпоследней строке

Последний раз редактировалось voraa, 13.12.2021 в 06:05.
Ответить с цитированием
  #3 (permalink)  
Старый 13.12.2021, 06:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 31,789

mik888em,
<pre>

<script>
let str = `===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============
`;
let save = 0, txt = 'gk qwerty'
str = str.split(/\n/).filter(a => {
if(save-- > 0) return true;
save = a.includes(txt) ?  2 : 0
});
document.write(str.join('\n'))

</script>
</pre>
Ответить с цитированием
  #4 (permalink)  
Старый 13.12.2021, 11:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 13,786

Добавлю свои 5коп...
<script>
const str = `===============
f fgyuf
с Scryptics
s Nartelis19
rhvrihvieg445gv54vuv
===============
gk qwerty gfhfg
с h5vvh5vh5vh5
s bj65v54gc4g
gdfgdsggrsgdg433
===============
dgf ffrffef
c c4ccf4cf4cf4fc4
s Ugniukas1
v4gv4v5g4g4vg5v4
===============
gk qwerty kfefdf
c vg545v4gv45gv5g4v5g4
s jb6jb6jb6j
g4g4vv4gv4gvg4
===============
gtth vdvfv gtggg
c vg4vg45v45gvg4545vgv45g
s v454vgv545v4gvg45
v4gg4vvg4g4vvg4vg45vg45vg4545vg
===============
fvdver 443342
c cffx2sx2xs2xs2
s xe332xd23f4v5gh5b6
445vgv45gv45gv45gv45g45vg
===============
`;
const txt = 'gk qwerty'
let i = 0
do {
	i = str.indexOf(txt, i)
	if (i !== -1) {
		i = str.indexOf('\n', i)
		let k = i
		for (let j = 0; j < 2 ; j++) k = str.indexOf('\n', k + 1)
		const val = str.substring(i + 1, k).replace('\n', ': ')
		document.write('<p>' + val + '</p>')
		i = k
	}
} while (i !== -1)
</script>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cкрипт javascript работает только после того, как курсор в адресную строку qwaker Элементы интерфейса 4 25.04.2014 16:04
Как вы относитесь к наркоманам? Maxmaxmaximus7 Оффтопик 7 05.02.2014 11:29
Как подгружать флеш только после загрузки остального imediasun1 Элементы интерфейса 1 28.11.2013 13:30
Как отобразить img только после загрузки всего изображения overdrive Общие вопросы Javascript 6 06.11.2012 18:02
Как вызвать событие после события определенного в onchange Наталья Events/DOM/Window 2 12.09.2009 12:51