2011-02-23 96 views
1

我有一個字符串,可能看起來像這些之一,我想要在頁面上顯示此字符串,但刪除所有尾隨字符(空格,逗號)。是否有可能在JavaScript中包含其他字符jquery.Trim()

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

如果我使用jquery.Trim(),將用於字符串2和STRING3工作,但我希望有一個解決方案,將字符串1刪除尾隨comman爲好。

什麼是最好的方式來做到這一點的JavaScript,jquery ??

回答

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

+1

但是,如果有兩個尾隨逗號? ':)' – 2011-02-24 00:33:36

+1

@ŠimeVidas - *笑*真......或多個分號!如果需要過濾額外的字符,則可以更新正則表達式以包含它們 - @Roland Illig的正則表達式可以以這種方式擴展。 – 2011-02-24 00:48:07

+0

+1打鴨子 – 2013-08-20 10:13:42

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

這正是正則表達式的好處。

+0

你的意思是替換? JavaScript中沒有replaceAll。 – 2011-02-24 00:29:36

+0

糟糕。是的,我願意。我在過去的日子裏可能做了太多的Java。 :)它的答案是固定的。 – 2011-02-24 20:11:38

3

內部,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/

+0

它還會首先查看String對象是否有本地修剪功能並使用該功能。 – 2011-02-24 00:09:31

+0

是的,這可能是爲什麼jQuery.trim沒有采取任何選擇來改變它的行爲,因爲它意味着不能使用更快的String.prototype.trim – rsp 2011-02-24 00:23:22

相關問題