Можно ли в JavaScript включать другие символы в jquery.Trim () - PullRequest
1 голос
/ 24 февраля 2011

У меня есть строка, которая может выглядеть как одна из них, и я хочу отобразить эту строку на странице, но удалить все завершающие символы (пробелы, запятые.)

var string1  =  "test, test1, test2, test3, ";  
var string2  =  "test, test1, test2, test3 ";  
var string3  =  "test, test1, test2, test3";  

если я использую jquery.Trim (), который будет работать для string2 и string3, но мне нужно решение, которое удалит также завершающий запятую из string1.

каков наилучший способ сделать это в javascript, jquery ??

Ответы [ 3 ]

3 голосов
/ 24 февраля 2011

Внутренне, jQuery.trim использует две переменные:

trimLeft = /^\s+/,
trimRight = /\s+$/,

, которая является частной для функции jQuery, поэтому вы не можете их изменить (что хорошо, потому что другой код может зависеть от jQuery.trimработает так, как работает).

Но вы можете легко создать свою собственную функцию обрезки с нужной вам семантикой, даже в виде плагина jQuery:

// your plugin:
jQuery.trimCommas = function(text) {
    return text == null ?
        "" :
        text.toString().replace(/^[\s,]+|[\s,]+$/g, "");
};

// your code:
var string1 = "test, test1, test2, test3, ";
alert($.trimCommas(string1));

См. эту скрипку: http://jsfiddle.net/Nwsur/

2 голосов
/ 24 февраля 2011

Самый простой способ сделать это с помощью регулярных выражений.

your_string = your_string.replace(/,?\s+$/, "");

Если вы хотите использовать это везде, вы можете обновить $.trim, чтобы получить регулярное выражение следующим образом:

(function($){

var old_trim = $.trim;

function trim() {
    switch (arguments.length) {
        case 2:
            throw new Error("Invalid argument." + 
                            " $.trim must be called with either a string" +
                            " or haystack, replacer, replacement");
            break;
        case 3:
            return arguments[0].replace(arguments[1], arguments[2]);
        default:
            return old_trim.call($, arguments);
    }
}

$.trim = trim;

})(jQuery);

Этот паттерн иногда называют Утиная перфорация .

1 голос
/ 24 февраля 2011
var trimmed = "test3, \t\r\n".replace(/[\s,]+$/, "");

Это именно то, для чего подходят регулярные выражения.

...