Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Дополнить функцию addDots (https://javascript.ru/forum/misc/67376-dopolnit-funkciyu-adddots.html)

SaM1001 14.02.2017 15:36

Дополнить функцию 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

Dilettante_Pro 14.02.2017 15:47

SaM1001,
Цитата:

Сообщение от SaM1001
дополнялся до 4 знаков нулями

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

Сообщение от SaM1001
начинался всегда 0х

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

SaM1001 14.02.2017 15:58

Цитата:

Сообщение от Dilettante_Pro (Сообщение 444275)
SaM1001,

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

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


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

if (x.lenght != 4){
            return (тут ещё не знаю что дописать потому, что не понимаю)
        }

Dilettante_Pro 14.02.2017 16:18

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

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

рони 14.02.2017 16:26

SaM1001,
можно не проверять длину -- прибавить к строке из нулей вашу строку, убрать точки, взять нужный кусок с конца, разбить на 4 элемента и соединить точками вернуть "0x " + nStr -- и того 2 строчки вся функция

SaM1001 14.02.2017 16:31

Цитата:

Сообщение от Dilettante_Pro
Думайте дальше

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

Цитата:

Сообщение от рони
и того 2 строчки вся функция

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

Но буду пробовать!!! Спасибо за подсказки!!!

SaM1001 14.02.2017 16:46

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;
    }


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

рони 14.02.2017 16:50

SaM1001,
function addDots(nStr) {
    nStr = ('0000'+ nStr).replace(/\./g,'');
    return   '0х ' + nStr.split('').slice(-4).join('.');
    }
alert(addDots('2.0.0'));

SaM1001 14.02.2017 16:54

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

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


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

рони 14.02.2017 17:14

Цитата:

Сообщение от SaM1001
разделяющие точки, простым удалением из этой строчки

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


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