Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2013, 18:09   #1
Freesty1er
Пользователь
 
Аватар для Freesty1er
 
Регистрация: 23.09.2011
Сообщений: 19
Стрелка Поменять символы местами [JS]

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

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

Последний раз редактировалось Freesty1er; 30.12.2013 в 18:30.
Freesty1er вне форума Ответить с цитированием
Старый 30.12.2013, 18:34   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

регуляркой можно, если все зависит от положения символов
Код:
'code-16429998id1733999hash3d777222hd'.replace(/(.{5})(\d{2})(\d{2})(.{6})(\d{2})(\d{2})(.{9})(\d{3})(\d{3})(.*)/,'$1$3$2$4$6$5$7$9$8$10')
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 30.12.2013, 18:54   #4
Freesty1er
Пользователь
 
Аватар для Freesty1er
 
Регистрация: 23.09.2011
Сообщений: 19
По умолчанию

Naive, я может не удачный пример привел, но на месте символов, который нужно поменять местами, могут быть и буквы.
Freesty1er вне форума Ответить с цитированием
Старый 30.12.2013, 19:03   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

ну тогда вместо \d можно поставить точку
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 30.12.2013, 19:07   #6
Freesty1er
Пользователь
 
Аватар для Freesty1er
 
Регистрация: 23.09.2011
Сообщений: 19
По умолчанию

Вот с этим примером, помогите, пожалуйста, что бы я окончательно понял

hash213ccf554с634
hashcc2f13554с634

Последний раз редактировалось Freesty1er; 30.12.2013 в 19:11.
Freesty1er вне форума Ответить с цитированием
Старый 30.12.2013, 19:10   #7
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,542
По умолчанию

Позиции символов фиксированы? Тогда собрать новую строку с помощью substr и никакие регулярки не нужны.
Arigato вне форума Ответить с цитированием
Старый 30.12.2013, 19:18   #8
Freesty1er
Пользователь
 
Аватар для Freesty1er
 
Регистрация: 23.09.2011
Сообщений: 19
По умолчанию

Arigato, да, фиксированные. А как, можно пример? Просто я в программировании 0
Freesty1er вне форума Ответить с цитированием
Старый 30.12.2013, 19:18   #9
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Позиции символов фиксированы? Тогда собрать новую строку с помощью substr и никакие регулярки не нужны.
регулярка быстрее

Цитата:
Сообщение от Freesty1er Посмотреть сообщение
Вот с этим примером, помогите, пожалуйста, что бы я окончательно понял

hash213ccf554с634
hashcc2f13554с634
Код:
'hash213ccf554с634'.replace(/(.{4})(.)(..)(..)(.)(.+)/, '$1$4$2$5$3$6');
чет в исходнике что-то другое было... Если кусков больше 10, то действительно удобней через сабстр, ибо в реплейс придется передавать ф-ю
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 30.12.2013, 19:35   #10
DpolenST
Форумчанин
 
Регистрация: 28.09.2013
Сообщений: 115
По умолчанию

Код:
function movechar(string,a,b)
{
 if(a==b)return string;
 if (a>b){c=a;a=b;b=c;}
 return (string.slice(0, a)+string.charAt(b)+string.slice(a+1,b)+string.charAt(a)+string.slice(b+1));
}

str1="code-16429998id1733999hash3d777222hd";
str1=movechar(str1,7,5); // меняет местами 5 и 7 символы
str1=movechar(str1,6,8); // меняет местами 6 и 8 символы

и т.д.
Что бы еще такого сделать, чтобы ничего не делать?
DpolenST вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Turbo Pascal. В каждом нечетном по порядку слове поменять местами первый и последний символы cdc Помощь студентам 0 08.11.2012 14:21
Поменять местами Dmitriy_Voland Microsoft Office Excel 1 22.08.2012 18:38
Поменять местами диапазоны bize Microsoft Office Excel 8 09.02.2012 21:18
поменять местами символы warca Паскаль, Turbo Pascal, PascalABC.NET 5 24.01.2012 22:59
поменять местами научите Паскаль, Turbo Pascal, PascalABC.NET 13 08.01.2009 13:43