Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2013, 11:28
Аватар для Кирюха =)
Профессор
Отправить личное сообщение для Кирюха =) Посмотреть профиль Найти все сообщения от Кирюха =)
 
Регистрация: 27.07.2011
Сообщений: 207

Разбиение числа по 3 символа (изящный способ)
Всем привет!!! Задался недавно проблемой есть допустим строка 50000, как при помощи js преобразовать ее в 50 000, наиболее изящным способом. Я уверен что есть такое решение.... О искусники помогите
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2013, 11:47
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

function gap(n) {
  return n.replace(/\d{0,3}(?=(\d{3})+$)/g, "$& ") ;
}
alert([gap("50000"), gap("1234567890")]) ;
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2013, 11:48
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от Кирюха =)
О искусники помогите
Помощь стучится в двери - открой!
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2013, 11:49
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

В книге по регуляркам было
var str = '5000022222121';
var reg = /(\d)(?=(\d\d\d)+\b)/ig
alert(str.replace(reg, '$1 '))
Ответить с цитированием
  #5 (permalink)  
Старый 18.05.2013, 01:05
Аватар для Кирюха =)
Профессор
Отправить личное сообщение для Кирюха =) Посмотреть профиль Найти все сообщения от Кирюха =)
 
Регистрация: 27.07.2011
Сообщений: 207

ksa, я не знал как задать поисковой запрос)))) вводил всякую чушь например разбиение числа..... и тп)))
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2013, 01:08
Аватар для Кирюха =)
Профессор
Отправить личное сообщение для Кирюха =) Посмотреть профиль Найти все сообщения от Кирюха =)
 
Регистрация: 27.07.2011
Сообщений: 207

Сообщение от zebra Посмотреть сообщение
В книге по регуляркам было
var str = '5000022222121';
var reg = /(\d)(?=(\d\d\d)+\b)/ig
alert(str.replace(reg, '$1 '))
А что есть отдельная книга посвященная регулярным выражениям?????
Если да, то скажите автора и название, я ее буду страстно читать..... а то я пробовал с регулярными выражениями разобраться и все никак не получалось((((
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2013, 01:09
Аватар для Кирюха =)
Профессор
Отправить личное сообщение для Кирюха =) Посмотреть профиль Найти все сообщения от Кирюха =)
 
Регистрация: 27.07.2011
Сообщений: 207

Hekumok,
Спасибо, это именно тот исскусный способ)))) + 1 в копилку
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2013, 11:28
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Вариант от zebra лучше, но так няшнее:
function gap(str, separator) {
  return str.replace(/\d(?=(?:\d{3})+\b)/g, "$&" + (separator||' ')) ;
}
alert([gap("прапрапр 50000 рпвр 5999 вопр", ','), gap("1234567890"), gap("123456789", '-')]) ;



Вариант от Hekumok ошибочен в {0,3}, ибо:
function gap(n) {
  return n.replace(/\d{0,3}(?=(\d{3})+$)/g, "$&-") ;
}
alert(gap("123456789")) ;
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 18.05.2013, 12:32
Профессор
Отправить личное сообщение для zebra Посмотреть профиль Найти все сообщения от zebra
 
Регистрация: 14.09.2011
Сообщений: 523

Сообщение от Кирюха =)
А что есть отдельная книга посвященная регулярным выражениям?????
Да есть. Читаю как раз. Называется "регулярные выражения 3-е издание"
Ответить с цитированием
  #10 (permalink)  
Старый 18.05.2013, 19:56
Аватар для Кирюха =)
Профессор
Отправить личное сообщение для Кирюха =) Посмотреть профиль Найти все сообщения от Кирюха =)
 
Регистрация: 27.07.2011
Сообщений: 207

Сообщение от Aetae Посмотреть сообщение
Вариант от zebra лучше, но так няшнее:
function gap(str, separator) {
  return str.replace(/\d(?=(?:\d{3})+\b)/g, "$&" + (separator||' ')) ;
}
alert([gap("прапрапр 50000 рпвр 5999 вопр", ','), gap("1234567890"), gap("123456789", '-')]) ;



Вариант от Hekumok ошибочен в {0,3}, ибо:
function gap(n) {
  return n.replace(/\d{0,3}(?=(\d{3})+$)/g, "$&-") ;
}
alert(gap("123456789")) ;
И правда няшней, возьму ваш))))
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вбор числа после определенного символа в строке Jekel Серверные языки и технологии 2 21.03.2010 13:17