Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.02.2017, 15:36
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Дополнить функцию addDots
Всем здрасти,

нарыл в инете функцию которая мне после каждого знака проставляет точку.

function addDots(nStr) {
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\w+)(\w{1})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + '.' + '$2');
        }
        return x1 + x2;
    }

А вот теперь сама суть вопроса: прошу не написать за меня, а показать в какую сторону смотреть чтобы расширить её "счётчиком", по которуму выдваемый результат дополнялся до 4 знаков нулями и начинался всегда 0х
Например у меня сейчас 2.0.0 - а надо чтобы выдавало 0х 0.2.0.0
или 3.b.0 доджно стать 0х 0.3.b.0

Заранее благодарю за будущие подсказки, хочется самому понять как это работает и научиться хоть чуток программировать на JS
Ответить с цитированием
  #2 (permalink)  
Старый 14.02.2017, 15:47
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SaM1001,
Сообщение от SaM1001
дополнялся до 4 знаков нулями
проверять длину полученной строки и приплюсовывать спереди необходимое к-во "0."
Сообщение от SaM1001
начинался всегда 0х
Прибавить спереди к результату "0x "
Ответить с цитированием
  #3 (permalink)  
Старый 14.02.2017, 15:58
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Сообщение от Dilettante_Pro Посмотреть сообщение
SaM1001,

проверять длину полученной строки и приплюсовывать спереди необходимое к-во "0."

Прибавить спереди к результату "0x "

как то вот так наверное:

if (x.lenght != 4){
            return (тут ещё не знаю что дописать потому, что не понимаю)
        }
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2017, 16:18
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

SaM1001,
По дополнению нулями с точкой
var x3 = x1 + x2;
 while(x3.length < 7) {
     x3 = "0." + x3;
 }

Думайте дальше

Последний раз редактировалось Dilettante_Pro, 14.02.2017 в 16:21.
Ответить с цитированием
  #5 (permalink)  
Старый 14.02.2017, 16:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

SaM1001,
можно не проверять длину -- прибавить к строке из нулей вашу строку, убрать точки, взять нужный кусок с конца, разбить на 4 элемента и соединить точками вернуть "0x " + nStr -- и того 2 строчки вся функция
Ответить с цитированием
  #6 (permalink)  
Старый 14.02.2017, 16:31
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Сообщение от Dilettante_Pro
Думайте дальше
Спасибо за подсказки, очень рад что не дают готовое решение, а заставляют самому шевелить извилинами!!!

Сообщение от рони
и того 2 строчки вся функция
Я только начинаюший в JavaScript, для меня две строчки уже много(((

Но буду пробовать!!! Спасибо за подсказки!!!
Ответить с цитированием
  #7 (permalink)  
Старый 14.02.2017, 16:46
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Dilettante_Pro - у меня как-то так получилось!!! Спасибо за подсказку!
Ребят, сильно не ругайтесь только, у вас решение наверное совсем по другому будет выглядеть, но я сделал вот так и теперь работает:

function addDots(nStr) {
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\w+)(\w{1})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + '.' + '$2');
        }

        var x3 = x1 + x2;
        while (x3.length < 7) {
            x3 = "0." + x3;
        }

        return "0x"+ x3;
    }


Спасибо огромное за помошь!

Последний раз редактировалось SaM1001, 14.02.2017 в 17:02.
Ответить с цитированием
  #8 (permalink)  
Старый 14.02.2017, 16:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

SaM1001,
function addDots(nStr) {
    nStr = ('0000'+ nStr).replace(/\./g,'');
    return   '0х ' + nStr.split('').slice(-4).join('.');
    }
alert(addDots('2.0.0'));
Ответить с цитированием
  #9 (permalink)  
Старый 14.02.2017, 16:54
Аспирант
Отправить личное сообщение для SaM1001 Посмотреть профиль Найти все сообщения от SaM1001
 
Регистрация: 09.02.2017
Сообщений: 30

Рони, спасибо ещё раз, плюс тебе в карму! Но тут другой вопрос появился: А если я хочу убрать разделяющие точки, простым удалением из этой строчки
x1 = x1.replace(rgx, '$1' + '.' + '$2');

не получается. Что я делаю не так? Мне понять хочется этот скрипт


UPD: Уже всё сделал, всем спасибо огромное за вашу помощь!!!

Последний раз редактировалось SaM1001, 14.02.2017 в 17:12.
Ответить с цитированием
  #10 (permalink)  
Старый 14.02.2017, 17:14
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от SaM1001
разделяющие точки, простым удалением из этой строчки
тогда вы получите бесконечный цикл из-за условий выше
x1 = x1.replace(rgx, '$1$2'); равносильна строке x1 = x1
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расширение для Safari. Как вызвать функцию из popover в global page? housewm Opera, Safari и др. 0 21.12.2013 06:07
Выполнить функцию заранее неизвестную Neokortex jQuery 2 13.02.2012 12:41
checkbox включен запускаем одну функцию выключен другую Sadist_dead Элементы интерфейса 11 27.09.2011 10:46
проблема с передачей параметров в функцию bartonom Элементы интерфейса 4 19.09.2011 12:41
Как получить указатель на элемент вызвавший функцию pelayo Общие вопросы Javascript 9 29.06.2010 23:32