2014-09-11 3 views
0

У меня есть строка, как это:Как удалить последние цифры из цифр в середине строки?

var string = "value1=12345&value2=3210&value3=..." 

Я хочу, чтобы удалить две последние цифры значению1 и значение2, так что результирующая строка:

string = "value1=123&value2=32&value3=..." 

Я мог бы разделить строку на &, петли над элементами и удалите два последних символа, если элемент начинается с value1 или value2, затем присоединяйте элементы с помощью &. Но как сделать это как можно короче?

Спасибо!

+0

какой номер? основание 2, 16 или 10? Я вижу, что строки здесь не действительно цифры –

+0

Целочисленная база 10. – niutech

+0

Можете ли вы всегда ожидать, что '&' сразу предшествует 'value2' и' value3'? –

ответ

6
string = string.replace(/(value[12]=\d*)\d{2}/g, '$1'); 

Регулярное выражение соответствует value1= или value2=, за которым следует последовательность цифр. Группа захвата получает все до двух последних цифр. Затем мы заменяем совпадение группой захвата, поэтому последние 2 цифры удаляются.

+0

Спасибо, он работает красиво и элегантно! – niutech

3

Исходя из данной строки, вы можете использовать Positive Lookahead здесь, чтобы удалить последние две цифры.

var r = "value1=12345&value2=3210&value3=...".replace(/\d{2}(?=&)/g, ''); 
console.log(r); //=> "value1=123&value2=32&value3=..." 

Если & не всегда следуют в строке, и вы строго хотите изменить value1 и value2 ...

var r = "value1=12345&value2=3210&value3=...".replace(/(value[12]=\d*)\d{2}/g, '$1'); 
console.log(r); //=> "value1=123&value2=32&value3=..." 
+0

Это решение может изменять другие значения, кроме 'value1' и' value2'. –

+0

_I_ не волнует, какие значения меняются, но спасибо за то, что нашли время, чтобы скопировать ответ Бармара в стенограмму. –

+1

На самом деле я не копировал ни одного ответа, это просто способ написать выражение для того, что вы точно хотите сделать. – hwnd

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