2016-10-03 5 views
0

У меня есть строка, такая как ABC_DEF_GHI.Получение строки после первого _

Использование JavaScript Мне нужно получить все после первого _ (то есть DEF_GHI в этом случае). В строке может быть любое число _.

Если я что-то вроде

var str = "ABC_DEF_GHI_JKL"; 
var n = str.lastIndexOf('_'); 
var output = str.substring(n + 1); 

Это дало бы мне все после последнего подчеркивания. Тем не менее, мне нужно все после первого подчеркивания. Не удалось найти такой метод, как firstIndexOf, который дал бы мне все после первой _

ответ

2

Вы должны заменить вашу lastIndexOf() на indexOf(), который займет первое вхождение

var str = "ABC_DEF_GHI_JKL"; 
 
var n = str.indexOf('_'); 
 
var output = str.substring(n + 1); 
 
console.log(output);

-1

console.log("ABC_DEF_GHI_JKL".split('_').slice(1).join('_'));

выше просто расколоть ваша строка в массиве, расщепление на _, а затем роняет первый элемент массива, а затем соединяет их вместе с _.

+0

И downvote был для? .. Использование IndexOf не большое решение в любом случае. Что, если позже вы захотите получить все после второго _. Вниз-голосование это просто показывает, как узкомысленные некоторые из переполнения стека. Или, по крайней мере, иметь манеры, чтобы объяснить ваш голос. – Keith

+1

Требование состоит в том, чтобы получить деталь после первого подчеркивания. Каноническое решение для этого требования - использовать 'indexOf'. Если требование меняется, значит, и код. Нет смысла добавлять код, который решает теоретические, будущие требования. Особенно, когда этот код дороже, чем прямолинейное решение. – str

+0

@str Это было требование -> Использование JavaScript Мне нужно получить все после первого _ (то есть DEF_GHI в этом случае). Требовалось не исправлять его код. Читайте его сообщение снова. Если английский не ваш родной язык, тогда я прощу вас. Вниз голосование без причины просто заставляют людей спускать троллей. Не подходит для переполнения стека. – Keith

0

Один из способов сделать это

var str = "ABC_DEF_GHI", 
 
    pos = str.indexOf("_"); 
 
result = str.slice(pos+1); 
 
console.log(result);

+0

Я не собираюсь проголосовать за вас здесь, как это делают некоторые люди. Но я укажу, что результат немного ошибочен. – Keith

+0

@ Keith О да, вы правы. Спасибо за указание. Я исправил. – Redu

1

var str = "ABC_DEF_GHI", 
 
pos = str.indexOf("_"); 
 
result = str.slice(pos+1); 
 
console.log(result);

+0

Не знаете, почему у вас здесь голос, поэтому я буду голосовать за вас. Поскольку кто-то здесь был троллим с правом голоса. – Keith

+1

@ Keith Возможно, он был подавлен, потому что он не дал никаких объяснений, что не является хорошей практикой. Но где-то я согласен с вами, люди, которые downvote должны добавить комментарий, объясняющий, почему они downvote ... –

Смежные вопросы