我有一个字符串可能看起来像其中之一,我想在页面上显示此字符串,但删除所有尾随字符(空格,逗号。)
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中执行此操作的最佳方法是什么?
答案 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,]+$/, "");
这正是正则表达式的好处。