Как заставить indexof() считаться с конца строки

Если у меня есть строка: «354-567-3425 | Джон Доу», как я могу узнать, сколько символов после «|» символ? Я погуглил, и все, что я нашел, было методом javascript indexOf(). Это сработало бы, если бы я пытался найти количество символов ДО «|», но я не знаю, как запустить обратный отсчет indexOf(), если вы понимаете, о чем я. Я уверен, что есть простое решение. Любая помощь приветствуется.


person Drazzah    schedule 15.10.2014    source источник
comment
Мне нравятся все эти ответы. Это показывает вам, что в программировании, независимо от того, что вы хотите сделать, всегда есть более одного способа сделать это.   -  person Katie Kilian    schedule 15.10.2014


Ответы (6)


Скажи, как рев

var str = '354-567-3425 | John Doe';
var indexFromLast = str.length - str.indexOf('|');

indexFromLast имеет индекс с конца строки.

person Mritunjay    schedule 15.10.2014

Вы можете использовать lastIndexOf() вместо indexOf()

Подробная информация о MDN

person Stephen Thomas    schedule 15.10.2014

попробуйте этот фрагмент кода, он должен работать.

var yourString = "354-567-3425 | John Doe";
var index = yourString.indexOf("|");
var lengthYouWant = yourString.slice(index + 1).length;
person Prateek Jain    schedule 15.10.2014
comment
Вы действительно должны заканчивать свои утверждения точкой с запятой. Это не является строго необходимым, правда, но позволяет избежать уродливого класса ошибок. - person Katie Kilian; 15.10.2014

Попробуй это:

var str = "354-567-3425 | John Doe";
var charsAfter = str.length - str.indexOf("|") - 1;

- 1 должен двигаться дальше символа |.

person Katie Kilian    schedule 15.10.2014

Если ваше значение всегда будет иметь один разделитель |, вы можете найти общее количество символов после | следующим образом:

'354-567-3425 | John Doe'.split('|')[1].length

Вот еще один способ сделать это, если число | не является обычным:

var data = '354-567-3425 | John Doe | 666 Elm Street';
var lastIndexPos = data.lastIndexOf('|');
console.log(data.substr(lastIndexPos + 1).length);
person DeeDee    schedule 15.10.2014

Я использую что-то вроде следующего:

 var myString= '354-567-3425 | John Doe';
 myString.substr(myString.indexOf('|') + 1)
person tamak    schedule 15.10.2014