jQuery - 替换所有选项名称中的空格

时间:2012-02-03 11:07:04

标签: javascript jquery string loops replace

我有一个返回的JSON字符串,我已经解析并将其放入一个数组中,然后进行格式化以放入选择下拉列表:

   function populateGroups(){
        var categories = '';
        for( category in gCategories ){
            categories += '<option name="' + gCategories[category] + '">' + gCategories[category] + '</option>';
            categories.replace(' ', '_');
        }
        $('select[name="category"]').html(categories);    
    }

我遇到的问题是选项名称(与值相同)包含我需要用有效的东西替换的空格,例如下划线'_'。

这就是我尝试做categories.replace('','_')的原因;我也试过用正则表达式做这个,虽然我的RegEx不是很好:P

关于如何做到这一点的任何想法?

谢谢!

[注] 这是JSFiddle:http://jsfiddle.net/pKYr4/

4 个答案:

答案 0 :(得分:4)

如果您将字符串传递给replace,它只会替换第一次出现。

您应该使用.replace(/ /g, '_')代替。 g标志用于全局。

我想你不想在标记字符串上运行它,但仅限于类别,否则你将<option_name=...

可能是这样的:

    for (category in gCategories ) {
        var noSpaceCategory = gCategories[category].replace(/ /g, '_');
        categories += '<option name="' + noSpaceCategory + '">' + gCategories[category] + '</option>';
    }

答案 1 :(得分:1)

您可以使用javascript trim删除空格,请参阅:http://blog.stevenlevithan.com/archives/faster-trim-javascript。如果你想用破折号替换它们:

var str = gCategories[category];

str.replace(/\s+/g, '-');

答案 2 :(得分:1)

也许是这样的:

function replaceAll(txt, replace, with_this) {
  return txt.replace(new RegExp(replace, 'g'),with_this);
}

可以像这样调用:

replaceAll('1,000,000', ',', '')

可以工作......

答案 3 :(得分:1)

您也应该更新字符串;

categories = categories.replace(/ /g, '_');

......但问题是,不仅因为<option name="...也会影响格式化/裁剪值。

<option_name="category_value">category_value</option>

这可以通过这种方式解决;

function populateGroups() {
    var categories = '';
    for( c in gCategories ) {
        var categoryValue = gCategories[c].replace(/ /g, '_');
        categories += '<option name="' + categoryValue + '">' + gCategories[c] + '</option>';
    }
    $('select[name="category"]').html(categories);    
}