是否可以在javascript中包含jquery.Trim()中的其他字符

时间:2011-02-23 23:57:37

标签: javascript jquery string parsing

我有一个字符串可能看起来像其中之一,我想在页面上显示此字符串,但删除所有尾随字符(空格,逗号。)

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

如果我使用jquery.Trim(),它将适用于string2和string3,但我想要一个解决方案,它将从string1中删除尾随的comman。

在javascript,jquery中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

在内部,jQuery.trim使用两个变量:

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

是jQuery函数的私有,所以你不能改变它们(这是一件好事,因为其他代码可能依赖于jQuery.trim的工作方式)。

但是你可以使用你需要的语义轻松地创建自己的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/

答案 1 :(得分:2)

最简单的方法是使用正则表达式。

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

此模式有时称为Duck Punching

答案 2 :(得分:1)

var trimmed = "test3, \t\r\n".replace(/[\s,]+$/, "");

这正是正则表达式的好处。

相关问题