2016-07-13 4 views
0

У меня есть одна строкаКак удалить определенный раздел строки после последнего вхождения определенного символа?

"Opportunity >> Source = Email >> Status = New >> Branch = Mumbai" 

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

"Opportunity >> Source = Email >> Status = New" 

Теперь я использую различные JQuery/JavaScript функции, такие как split(), reverse(), join(), indexOf() удалить остальную часть строки из последнего вхождения >> , например

var test = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai"; 
var count = test.split("").reverse().join("").indexOf('>>'); 
var string = test.substring(0, test.length - count-2); 

Используя это, я могу получить желаемый результат. Но я предполагаю, что для достижения этого должен быть какой-то другой более простой способ, чем jquery/javascript.

+0

Спасибо всем, все правильные ответы, но я выбрать один, который прост, и я могу легко понять –

ответ

2

Вы можете просто использовать метод lastIndexOf Строки

var input = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai"; 
 

 
console.log(input.substring(0, input.lastIndexOf(">>")))

3

Пожалуйста, попробуйте следующее:

"Opportunity >> Source = Email >> Status = New >> Branch = Mumbai".split(" >> ").slice(0, -1).join(" >> ") 

var str = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai"; 
 
console.log(str.split(" >> ").slice(0, -1).join(" >> "));

+1

Параметр '(0, -1)' не является очевидным, но красиво держит код в одной строке. –

0

Javascript имеет метод LastIndexOf(). Вы можете найти с ним последние события. Затем легко удалите остальную часть строки. Пример:

var test = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai"; 
var finIndex = test.lastIndexOf('>>'); 
var string = test.substring(0, finIndex); 

Вы можете проверить ссылку here

0

Вы можете splice его:

var arr = test.split(">>"); 
arr = arr.splice(arr.length - 1, 1); 
string = test.join(">>"); 
1

Вы можете получить LastIndex из >>, а затем получить подстроку от начала строки до последней позиции элемента >> в нем:

var str = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai" 
 
var lastindex = str.lastIndexOf(">>"); 
 
if (lastindex != -1){ 
 
    alert(str.substring(0, lastindex-1)); 
 
}

0

Еще один вариант: использовать pop()

var src = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai" 

var arr = src.split(">>"); 
arr.pop(); 
var s = arr.join(">>"); 
0

Вы можете нам e regex в .replace() для удаления дополнительной части строки. Regex выберите последнюю часть строки (>> Branch = Mumbai) и перетащите ее с пустым. Вы можете увидеть его в demo

var text = "Opportunity >> Source = Email >> Status = New >> Branch = Mumbai"; 
 
console.log(text.replace(/>>[^>]+$/g, ""));

+0

Да, это тоже просто, но я не очень хорошо знаком с регулярным выражением, было бы намного лучше, если бы вы немного объяснили свое регулярное выражение. –

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