[JS] String.format и други функции (библиотека)


4

Ето една библиотека, която започнах да пиша вчера. Съдържа някои методи, които видях, че ползвам прекалено често в кода си. Надявам се да е полезна на някого. Когато реша да добавя нови функции, ще я пусна в GitHub. Най- основното е 

String.format = function () {
    var formattedString = arguments[0];
 
    for (var index = 0; index < arguments.length - 1; index++) {
        var regex = new RegExp("\\{" + index + "\\}", "gm");
        formattedString = formattedString.replace(regex, arguments[index + 1]);
    }
 
    return formattedString;
};


Конкретната функция се използва интуитивно с конзолата на Дончо.

jsConsole.writeLine(String.format("{0} -> {1}", number.value, word));




Отговори



0

За форматиране на стрингове ползвам sprintf:

http://www.diveintojavascript.com/projects/javascript-sprintf

Placeholder-ите са %s (за стринг), %d (за цяло число), %f (за реално число):

 function Person(firstName, lastName, age) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.age = age;
            this.toString = function () {
                return sprintf("%s %s (age %d)", this.firstName, this.lastName, this.age);
            }
        }
 
Малко е "old school" (в стил C), но е удобна за работа.

от vic.alexiev (2299 точки)


0
Това би било полезно за хората, свикнали/по- запознати със C. За щастие може би : ) не съм един от тях и ми е много по- удобно да работя с нещо по- близко до C#.

от Anubis_Black (1521 точки)


1

Регулярните изрази са хубави но са бавни в JavaScript, а предполагам и в C#.

моята функция е това:

 

function stringFormat() {
   var i, arg,
   str = arguments[0];
   for (i = 1; i < arguments.length; i++) {
      arg = '{' + (i - 1) + '}';
      str = str.replace(arg, arguments[i]);
   }
   return str;
}

от ipankov (425 точки)


0
Стринговете, които трябва да се форматират, са изключително кратки. Досега не съм писал текст на конзолата, в който да трябва да вмъквам променливи. Обикновено са едно- две изречения. В такива случаи няма съществена разлика между двете. Плюс това този регулярен израз е еквивалентен на стринг, не ползва metacharacters, т.е. си е един обикновен стринг.
И все пак си прав. Не винаги е добра идея да се ползват регулярни изрази, когато може да се направи същото със стринг.

от Anubis_Black (1521 точки)