2015-08-19 2 views
0

У меня есть требование удалить последние n символов из строки или удалить «страницу» из определенной строки. Например:Регулярное выражение для удаления последних n символов

var string = 'facebookpage'; 

Expected output string = 'facebook' 

Я хотел бы удалить «страницу» из строки.

Выполнено с использованием подстроки.

var str = "facebookpage"; 
str = str.substring(0, str.length - 4); 

Не могли бы вы помочь мне найти лучший способ сделать это.

+3

Если вы специально хотите удалить «страницы» вы можете использовать '' replace': уаг ул = str.replace («страница», «») ', в противном случае вероятно, не является более простым методом. – Andy

+0

это лучший способ. хотя через regex 'str.replace (\ w {4} $," "); ' –

+5

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

ответ

1

Regex для этого:

//str - string; 
//n - count of symbols, for return 
function(str, n){ 
    var re = new RegExp(".{" + n + "}","i"); 
    return str.match(re); 
}; 

EDIT:

Для Вытащите последних п символов:

var re = new RegExp(".{" + n + "}$","i"); 
return str.replace(re, ""); 

UPDATE:
Но использовать регулярное выражение для решения этой задачи, не хороший способ; Например, Среднее время выполнения на 100000 итераций:

Str length solution = 63.34 ms 
Regex solution  = 172.2 ms 
+0

Вам не хватает '$' для конца строки. –

+0

@ Olson.dev Nope. 1-й вариант - возврат от 0 до n позиции; Но спасибо, Ты дал мне идею, как удалить точно последние n символов; – user3335966

+0

Ваш оригинальный ответ не ответил OP, ваш EDIT делает. Передача флага «i» является избыточной. –

1

Использование Javascript заменить функцию

var str = "facebookpage"; 
str = str.replace('page',''); 
0

Вы можете использовать это регулярное выражение:

(.*)\\w{4} 

код:

var regex =(new RegExp("(.*)\\w{4}")) 
val output = regex .exec("facebookpage") 
// output is : ["facebookpage", "facebook"] 
// output[1] is the Expected output which you want. 

Надеется, что это помогает.

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