如何删除最后一个逗号?

时间:2010-01-12 07:56:27

标签: javascript jquery

此代码生成逗号分隔的字符串,以便为另一个页面的查询字符串提供ID列表,但字符串末尾有一个额外的逗号。如何删除或避免使用额外的逗号?

<script type="text/javascript">
    $(document).ready(function() {
        $('td.title_listing :checkbox').change(function() {
            $('#cbSelectAll').attr('checked', false);
        });
    });
    function CotactSelected() {
        var n = $("td.title_listing input:checked");
        alert(n.length);
        var s = "";
        n.each(function() {
            s += $(this).val() + ",";
        });
        window.location = "/D_ContactSeller.aspx?property=" + s;
        alert(s);
    }
</script>

12 个答案:

答案 0 :(得分:89)

使用Array.join

var s = "";
n.each(function() {
    s += $(this).val() + ",";
});

变为:

var a = [];
n.each(function() {
    a.push($(this).val());
});
var s = a.join(', ');

答案 1 :(得分:25)

s = s.substring(0, s.length - 1);

答案 2 :(得分:12)

您可以使用String.prototype.slice方法使用负endSlice参数:

n = n.slice(0, -1); // last char removed, "abc".slice(0, -1) == "ab"

或者您可以使用$.map方法构建逗号分隔字符串:

var s = n.map(function(){
  return $(this).val();
}).get().join();

alert(s);

答案 3 :(得分:6)

您可以直接跳过添加它,而不是删除它:

var s = '';
n.each(function() {
   s += (s.length > 0 ? ',' : '') + $(this).val();
});

答案 4 :(得分:5)

使用substring

&#13;
&#13;
var strNumber = "3623,3635,";

document.write(strNumber.substring(0, strNumber.length - 1));
&#13;
&#13;
&#13;

使用slice

&#13;
&#13;
document.write("3623,3635,".slice(0, -1));
&#13;
&#13;
&#13;

使用map

&#13;
&#13;
var strNumber = "3623,3635,";

var arrData = strNumber.split(',');

document.write($.map(arrData, function(value, i) {
  return value != "" ? value : null;
}).join(','));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

使用Array.join

&#13;
&#13;
var strNumber = "3623,3635,";
var arrTemp = strNumber.split(',');
var arrData = [];

$.each(arrTemp, function(key, value) {
  //document.writeln(value);
  if (value != "")
    arrData.push(value);
});

document.write(arrData.join(', '));
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

答案 5 :(得分:3)

使用'普通'javascript:

var truncated = s.substring(0, s.length - 1);

答案 6 :(得分:2)

更原始的方法是将each循环更改为for循环

for(var x = 0; x < n.length; x++ ) {
  if(x < n.length - 1)
    s += $(n[x]).val() + ",";
  else
    s += $(n[x]).val();
}

答案 7 :(得分:1)

Sam的回答是迄今为止最好的,但在这种情况下,我认为mapeach更好。您正在将元素列表转换为其值列表,而这正是map的设计目标。

var list = $("td.title_listing input:checked")
    .map(function() { return $(this).val(); })
    .get().join(', ');

编辑:哎呀,我错过了CMS让我使用了map,他只是根据我slice的建议将其隐藏起来。

答案 8 :(得分:0)

您可以使用以下扩展方法:

String.prototype.trimEnd = function (c) {
    c = c ? c : ' ';
    var i = this.length - 1;
    for (; i >= 0 && this.charAt(i) == c; i--);
    return this.substring(0, i + 1);
}

这样你就可以像:

一样使用它
var str="hello,";
str.trimEnd(',');

输出:你好

了解更多扩展方法,请查看以下链接: Javascript helper methods

答案 9 :(得分:0)

这是一个简单的方法:

    var str = '1,2,3,4,5,6,';
    strclean = str+'#';
    strclean = $.trim(strclean.replace(/,#/g, ''));
    strclean = $.trim(str.replace(/#/g, ''));

答案 10 :(得分:-1)

 s = s.TrimEnd(",".ToCharArray());

答案 11 :(得分:-1)

编写一个javascript函数:

var removeLastChar = function(value, char){
    var lastChar = value.slice(-1);
    if(lastChar == char) {
      value = value.slice(0, -1);
    }
    return value;
}

像这样使用:

var nums = '1,2,3,4,5,6,';
var result = removeLastChar(nums, ',');
console.log(result);

<强> jsfiddle demo