2013-06-25 2 views
0

Если у меня есть строка выглядит следующим образом:Javascript заменить динамический текст в строке

http:/mydomain.com/index.php/this/is/an/amazing/url/param/560/ 

и я хочу, чтобы заменить значение 560, что является способ сделать это.

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

т.е.

значение может быть что угодно:

http:/mydomain.com/index.php/this/is/an/amazing/url/param/120/ 
http:/mydomain.com/index.php/this/is/an/amazing/url/param/200/ 

также лидирующий слэш может отсутствовать т.е.

http:/mydomain.com/index.php/this/is/an/amazing/url/param/560 
+1

Да, используйте .replace() с регулярным выражением – YD1m

+0

Когда вы говорите «значение может быть что угодно», вы хотите, чтобы вы хотели заменить любое число в конце URL-адреса, или значение является динамическим входом в программу ? – Barmar

+0

И если исходный URL-адрес заканчивается на '/', это нужно сохранить в результате? – Barmar

ответ

1

Regex, вероятно, самое простое решение в этом случае:

url.replace(/\/\d+\/?$/, '/' + newNumber); 

Это регулярное выражение специально ищет все, что заканчивается косой чертой, 1 или более цифр, а затем необязательной косой чертой.

+1

это приведет к 'param123'; не забудьте заменить символ '/' перед номером. – naomik

+0

Отличная точка, @naomik. Закрепление. – Jacob

0
var regex = new RegExp('\b'+value+'\b'); 
newurl = url.replace($regExp, newvalue); 
3

Вы могли бы сделать что-то вроде этого:

var new_number = 5; 

url = url.replace(/\d+(\/)?$/, new_number + "$1"); 

Это выглядит для чисел, то, возможно, один слэш, то конец строки. Таким образом, вы не будете сравнивать такие вещи, как http://example.com/some/other/1234/numbers.

+1

Добро пожаловать в stackoverflow.com. Это хороший ответ, хотя (\ /) выглядит как вульгарное искусство ascii. –

+0

+1 lol Что это значит? – naomik

+0

Ха, я полагаю, это так! Я думаю, что это просто добавляет к его очарованию. – deoxxa