2016-03-25 6 views
-1

В моем приложении javascript (angularjs) у меня есть строка var sample = "Der_Code_And_Tray_29", мне нужно иметь функцию, для которой мы передаем исходную строку sample, тогда функция должна пересекать строку с конца, чтобы найти первое появление подчеркивания и удаляет строку до тех пор и возвращает оставшуюся строку. Поэтому по существу приведенная строка, возвращаемая функцией, должна быть "Der_Code_And_Tray", т. Е. _29 следует удалить. Я пробовал несколько способов, например, найдя длину строки, декрементирующую индекс, чтобы получить знак подчеркивания, затем отмечая этот индекс и удаляя содержимое строки между этими двумя индексами. Я чувствую, что должен быть умный способ сделать это. Может ли кто-нибудь предложить мне лучший способ сделать это?Получение подстроки с несколькими манипуляциями

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

ответ

2

Просто замените от последнего подчеркивания до конца ни с чем:

sample.replace(/_[^_]*$/, '') 
+0

Удивительный ответ +1. – Gintoki

+0

torazaburo, замена пустой строкой должна выполняться только в том случае, если строка после последнего подчеркивания содержит только числа. Например, если строка «Der_Code_And_Tray_2f9», то результатом должна быть исходная строка, например, «Der_Code_And_Tray_2f9», но не «Der_Code_And_Tray». В моем первоначальном вопросе я пропустил это разъяснение. Простите за это. Но ваше решение возвращает «Der_Code_And_Tray» для «Der_Code_And_Tray_2f9» и «Der_Code_And_Tray_29» –

+0

ОК, так как бы вы исправили регулярное выражение, чтобы заставить его работать таким образом? –

1

Таким образом, в сущности, в результате строка, возвращаемая функцией должна быть "Der_Code_And_Tray", то есть., _29 должны быть удалены

попробовать это простейшее один

sample = sample.substring(0,sample.lastIndexOf("_")); 

или другой, бит более общий (заменить -1 с -2 для удаления последних двух элементов)

var sample = "Der_Code_And_Tray_29"; 
sample = sample.split("_").slice(0,-1).join("_"); 
0

сначала нужно использовать split, чтобы разделить вашу строку в массив подстрок, а затем удалить индекс массива, pop() затем join("_") элементы массива в строку:

var sample = "Der_Code_And_Tray_29"; 
 
sample=sample.split('_'); 
 
sample.pop(); 
 
sample = sample.join('_') 
 
console.log(sample)

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