【问题标题】:jQuery - Replace spaces within all Option NamesjQuery - 替换所有选项名称中的空格
【发布时间】:2012-02-03 11:07:04
【问题描述】:

我有一个返回的 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(' ', '_');我也试过用正则表达式来做这个,虽然我的正则表达式不是很好:P

有什么想法可以做到吗?

谢谢!

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

【问题讨论】:

    标签: javascript jquery string loops replace


    【解决方案1】:

    如果您将字符串传递给replace,它只会替换第一个匹配项。

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

    我猜你不想在标记字符串上运行它,而只是为了类别,否则你将拥有&lt;option_name=...

    可能是这样的:

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

    【讨论】:

    • i.imgur.com/yK8sM.png - 这是以下结果:i.imgur.com/BpIHb.png 这就是你所说的,但它似乎仍然不起作用:/
    • 更新了答案。如果它不能帮助创建一个 jsfiddle 来共享代码。图片很恶心
    • 效果很好。这正是我想要的^^再次感谢!
    【解决方案2】:

    你也应该更新字符串;

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

    ...一个问题是不仅值被格式化/修剪为&lt;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);    
    }
    

    【讨论】:

    • ^+1 正是我想要的。谢谢!
    【解决方案3】:

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

    var str = gCategories[category];

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

    【讨论】:

      【解决方案4】:

      可能是这样的:

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

      可以这样调用:

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

      可以工作...

      【讨论】:

        猜你喜欢
        • 2012-12-16
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        • 2014-11-21
        • 2018-04-15
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多