Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Найти второй пробел (https://javascript.ru/forum/misc/72261-najjti-vtorojj-probel.html)

marc 18.01.2018 16:27

Найти второй пробел
 
Подскажите, как найти второй пробел в строке?

let str = 'exit test some';

let value;

value = str.indexOf(' ');

Nexus 18.01.2018 16:59

Вариант не очень хороший, но вариант:
let str = 'exit test some';
let value = str.indexOf(' ', 1 + str.indexOf(' '));


function indexOf(haystack,needle,number){
	var i=0,index=-1;
	
	do{
		index=haystack.indexOf(needle,1+index);
	} while(index>-1 && ++i<(number||1));
		
	return index;
};

var str = 'exit test some';
alert(indexOf(str,' ',2));

marc 18.01.2018 17:05

Это вы сделали что-то вроде добавления двух пробелов?

laimas 18.01.2018 17:06

str.match(/\s/g)[1]

Nexus 18.01.2018 17:07

marc, сложно объяснить, почитайте:
https://javascript.ru/string/indexof

marc 18.01.2018 17:09

Nexus,
Там просто просчитано вручную, а мне надо как-то без подсчёта вручную

Nexus 18.01.2018 17:09

laimas, ваш вариант вернет не индекс символа, но сам символ.
Глупое занятие, при условии того, что символ извлекается определенный.
Т.е. результат заведомо известный.

Nexus 18.01.2018 17:10

marc, это без подсчета вручную.

marc 18.01.2018 17:12

Nexus,
В вашем варианте - да, а в статье по-моему вручную просчитывается.

Nexus 18.01.2018 17:15

marc, это описание работы метода с примерами.
Я дал вам это ссылку, чтобы вы поняли что я сделал.

laimas 18.01.2018 17:16

Цитата:

Сообщение от Nexus
laimas, ваш вариант вернет не индекс символа, но сам символ.

А вы вопрос то свой причитайте. Чего надо то конкретно описывайте, иначе что просили, то и получили.

рони 18.01.2018 17:16

marc,
"use strict"
let myRe = /\s\S+(?=\s)/g;
let str = 'exit test some';
myRe.exec(str);
let value = myRe.lastIndex;
alert(value);

Nexus 18.01.2018 17:22

laimas, вопрос не мой, но занятие-то бесполезное получается, если нужно получить сам пробел :)

laimas 18.01.2018 17:26

Цитата:

Сообщение от Nexus
но занятие-то бесполезное получается, если нужно получить сам пробел

А чего надо, слово после второго пробела?

str.split(' ')[2]

Каков вопрос таков и ответ.

Nexus 18.01.2018 17:29

Цитата:

Сообщение от laimas
А чего надо, слово после второго пробела?

Индекс второго пробела, как я понял )

laimas 18.01.2018 17:31

Цитата:

Сообщение от Nexus
Индекс второго пробела, как я понял

Ну так кто кому должен, тот кто задает вопрос или догадаться отвечающий? )

Nexus 18.01.2018 17:36

laimas, тот, кому ответ больше нужен )

Dilettante_Pro 18.01.2018 18:08

Не очень элегантно, но - массив индексов всех пробелов в строке.
Выбирай нужный.

var str = 'exit test some space end',
spaces = [],
i = -1;
do {
  i++;
  i = str.indexOf(' ', i);
  if(i >= 0) spaces.push(i);
} while (i >= 0)
alert(spaces);


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