Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поменять местами символы, относительно их положения (https://javascript.ru/forum/misc/43996-pomenyat-mestami-simvoly-otnositelno-ikh-polozheniya.html)

k1ker 30.12.2013 18:14

Поменять местами символы, относительно их положения
 
Здравствуйте! Есть строка:
code-16429998id1733999hash3d777222hd
Нужно получить такую:
code-42169998id3317999hash3d222777hd
Т.е., поменять местами красные и синие цифры, относительно их положения (т.е. первых 2 числа (в данном примере 16), будут всегда занимать позицию 6 и 7го символа.
Можно ли это как-то осуществить на JavaScript?

k1ker 30.12.2013 18:28

Хотя, здесь наверное придется с помощью рег. выражений разбивать на 10 переменных и с ними уже работать? По-другому никак, да?

BETEPAH 30.12.2013 18:57

Цитата:

Сообщение от k1ker
code-16429998id1733999hash3d777222hd
Нужно получить такую:
code-42169998id3317999hash3d222777hd
Т.е., поменять местами красные и синие цифры, относительно их положения (т.е. первых 2 числа (в данном примере 16), будут всегда занимать позицию 6 и 7го символа.

6 и 7й символы - это девятки. Они же на месте остались

k1ker 30.12.2013 19:09

Цитата:

Сообщение от BETEPAH (Сообщение 290069)
6 и 7й символы - это девятки. Они же на месте остались

Все! Проблему решил совершенно другим способом..)
Не правильно подошел изначально :)

BETEPAH, спасибо за помощь!

ksa 30.12.2013 23:34

Цитата:

Сообщение от k1ker
Есть строка:
code-16429998id1733999hash3d777222hd
Нужно получить такую:
code-42169998id3317999hash3d222777hd

Цитата:

Сообщение от k1ker
здесь наверное придется с помощью рег. выражений разбивать на 10 переменных и с ними уже работать?

Ты плохо думаешь про регулярные выражения... :D
Как вариант

var str='16429998id1733999hash3d777222hd';
alert(str.replace(/((\d\d)(\d\d)(999))|((\d{3})(\d{3}))/g,'$3$2$4$7$6'))

Antonius 01.01.2014 19:17

Так как решилость в итоге, если не регулярками?

Тоже хотел предложить способ с сохраняющими группами :)


Часовой пояс GMT +3, время: 19:33.