Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2014, 03:01
Новичок на форуме
Отправить личное сообщение для antropov_web Посмотреть профиль Найти все сообщения от antropov_web
 
Регистрация: 02.12.2014
Сообщений: 1

Работа со строкой, частью URL-а
Привет.

Есть конец URL-а, строка вида '/photo/.../X-Y-0-0-2'

Где:
/.../ — произвольное количество каталогов, может быть, например, таким: '/album1/' или таким: '/family_photos/my_photos/category2/album4/'
X, Y — произвольные целые числа.

Важны тут именно X и Y. В зависимости от определенных условий их нужно либо заменять другими числами, либо увеличивать на 1 независимо друг от друга. Также их значения нужно хранить в соответствующих им переменных. Конкретных примеров кода нет.

Меня интересуют способы работы с данными X и Y в данной строке.

К сожалению, ничего кроме такого алгоритма действий, придумать не смог:
1. Создать новый массив, разбив строку слэшем '/': ['photos', ..., 'X-Y-0-0-2']
2. Взять последний элемент и создать массив, разбив его дефисом '-': ['X', 'Y', '0', '0', '2']
3. Работать с X и Y как с первым и вторым элементами массива, преобразовав их в числа
4. Собрать обратно по кусочкам исходную строку с новыми X и Y

Может, выше это полный бред, и есть другой простой способ?
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2014, 04:17
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

http://javascript.ru/basic/regular-expression
Ответить с цитированием
  #3 (permalink)  
Старый 02.12.2014, 07:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

В первую очередь нужно попытаться вообще избавиться от такой задачи. Она какая-то неправильная. Сайт твой? Тогда точно задачи такой не должно возникать.
Ну и выбор регулярка vs работа со строками - постоянная дилемма.
Как нравится, так и делай. Описанный способ - ничуть не бред.
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #4 (permalink)  
Старый 02.12.2014, 08:13
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var url = '/photo/bla/5-6-0-0-2', //window.location.pathname
    urlData = /\/(\d+)-(\d+)-(\d+)-(\d+)-(\d+)/.exec(url); //Парсим данные
urlData.shift(); //Удаляем первый ненужный элемент

urlData[0]++; //Добавляем единицу к пятёрки
urlData[1] = 2; //Перезаписываем шестёрку на двойку

url = url.replace(/\/[0-9-]+/, '/' + urlData.join('-'));

window.history.pushState(null, null, url); //Меняем URL адресной строки на новый

alert(url);

Последний раз редактировалось ruslan_mart, 02.12.2014 в 10:30.
Ответить с цитированием
  #5 (permalink)  
Старый 02.12.2014, 10:21
Профессор
Посмотреть профиль Найти все сообщения от krutoy
 
Регистрация: 09.11.2014
Сообщений: 610

addr="/foo/bar/1-2-0-0-2"
rpl=function(str, n1, n2){
    return str.replace(/\/[\d-]+$/, function(p){return p.replace(/^(\/)\d(-)\d(.*)/, "$1"+n1+"$2"+n2+"$3")})
}

alert(rpl(addr, 3, 4))
//  /foo/bar/3-4-0-0-2
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение скрипта или его работа только на URL содержащих фразу в себе joggy Общие вопросы Javascript 1 23.05.2014 12:30
Работа с браузерной строкой Tit6ka Общие вопросы Javascript 5 06.03.2014 02:51
Работа с адресной строкой - что для этого нужно? riva Общие вопросы Javascript 10 04.07.2013 04:42
Водяной знак на fancybox bobrina Общие вопросы Javascript 1 03.06.2011 21:11
Работа с адресной строкой. Phoenix Общие вопросы Javascript 8 22.09.2009 16:02