2016-09-14 3 views
0

У меня есть строка URL со следующей структурой:Заменить последние цифры из строки

URL/Входящие/г/{PAGE_NUMBER}

Я нахожусь в ситуации, когда мне нужно заменить {page_number} с новым значением. Поэтому мне нужно как-то найти url/inbox/g и заменить его url/inbox/g/{new_value}.

Как использовать функцию replace() для достижения этой цели?

+0

- '{page_number}' буквальная строка "{page_number}" или это фактическое число? Кроме того, когда вы говорите, что вам нужно искать 'url/inbox/g', где вы это ищете? Есть ли более крупный текст, где вам нужно найти все упоминания о URL-адресе и заменить их, или это просто URL-адрес, который вы получаете в качестве входных данных? – vlaz

+0

@vlaz это фактическое число. путем поиска, я имею в виду первый параметр функции «replace». спасибо –

+0

Вы считаете RegEx? –

ответ

1

В связи с номером является последней частью строки, вы можете использовать не решение регулярных выражений с использованием lastIndexOf и slice:

<script> 
    url = 'url/inbox/g/44'; 
    replaceNumStr = 'Dummy'; 
    newVal = url.slice(0,url.lastIndexOf('/')+1); 
    alert(newVal+replaceNumStr); 
</script> 

Оформить заказ this demo

+1

Я узнал из всех ответов, но я использовал это. благодаря –

1
var url = "url/inbox/g/4321" 
var your_number = 1234 
url = url.replace(/\d+$/, your_number) 
+1

, что не будет работать, потому что {page_number} будет числом, которое изменяется каждый раз, поэтому оно не может быть жестко запрограммировано в вызове функции 'replace' – Pabs123

+2

, значение' page_number' отображается как обслуживаемая сторона, я не иметь контроль над ним. Он может быть 1 или более –

+0

прав, совершенно неверный вопрос. моя вина.что регулярное выражение должно быть тем, что вы ищете в моем обновленном ответе – larz

1

Используйте заменить заявление, как это:

var newVal = 'anything', 
    pattern = "/url\/inbox\/g\/\d+$/", 
    reg  = new RegExp(pattern, "i"); 
    repURL = url.replace(reg, "url/inbox/g/" + newVal); 

Я предполагаю, что url динамически доступ.

+0

Спасибо, я постараюсь использовать RegExp и отзывы, спасибо –

1

Я хотел бы использовать следующее регулярное выражение: /\/\d*$/m А замена может быть сделано с:

str.replace(/\/\d*$/m, "/" + n) 

Где n это новое значение

Регулярное выражение говорит найти все, которые соответствуют «/» за которым следуют 0 или более цифр и заканчивают строку. Reference

+0

Спасибо, я постараюсь использовать RegExp и обратную связь, спасибо –

1

Две другие возможности, не используя RegExp.

const url = 'url/inbox/g/{page_number}'; 
 
const parts = url.split('/', 3); 
 
const new_number = '{new_page_number}'; 
 
parts.push(new_number); 
 
const new_url1 = parts.join('/'); 
 
console.log(new_url1);

const url = 'url/inbox/g/{page_number}'; 
 
const new_number = '{new_page_number}'; 
 
const new_url2 = `${url.slice(0, url.lastIndexOf('/'))}/${new_number}`; 
 
console.log(new_url2);

+0

Спасибо, что сэр для всех этот информативный ответ –

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