【问题标题】:Simple/Basic Jquery or Javascript String Replace for Multiple Values [closed]多个值的简单/基本 Jquery 或 Javascript 字符串替换 [关闭]
【发布时间】:2013-11-19 07:06:01
【问题描述】:

我有一个数据库输出:

  1. example-phrase
  2. example2-phrase
  3. example-solution

我需要在页面加载时将这些替换为:

  1. 例句
  2. 示例 2 短语
  3. 示例和解决方案

我已经在页面上加载了 jQuery,因此我可以使用 jQuery 解决方案,但我知道使用一些基本的 Javascript 也是可能的...问题是我不知道任何一个以及我正在寻找的示例没有做我需要的。我还需要能够在未来添加更多替代品。

更新:我有这个来自另一个项目,但它替换了页面上任何 h2 元素中的“=”之前(包括)之前的所有内容。第一行:var re = /^[^=]+=\s*/, 让我失去了所有的符号,但是:

<script>
    var re = /^[^=]+=\s*/,
        elements = document.getElementsByTagName('h2')

    function processText(el) {
        el.textContent = el.textContent.replace(re, '');
    }

    for(var i = 0, l = elements.length; i < l; i++) {
        processText(elements[i]);
    }
</script>

【问题讨论】:

  • 一些代码会很棒。
  • 如果可能,最好在服务器上执行此操作。
  • @Juhana - 这可以用 PHP 完成吗?
  • @wared - 这是输出的代码,只是包装在一个 div 中。如果这有助于“按类名获取元素”解决方案,我可以给 div 一个类名。

标签: javascript jquery str-replace


【解决方案1】:

看看这个:

如你所说,你的字符串 (1) 是:

var ex1 = "example-phrase";
var res1 = ex1.replace("-", " ");
res1 = res1.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});

上述解决方案适用于第一种情况。对于第三种情况,只需添加以下内容,

var ex3 = "example-solution";
var res3 = ex3.replace("-", " ");
res3 = res3.toLowerCase().replace(/\b[a-z]/g, function(letter) {
    return letter.toUpperCase();
});
res3 = res3.replace(" ", " & ");

我觉得每次收到回复都检查是不可行的。

感谢this answer

【讨论】:

    【解决方案2】:
    var REPLACEMENTS = {
        'example-phrase': 'Example Phrase',
        'example2-phrase': 'Example 2 Phrase',
        'example-solution': 'Example & Solution'
    }
    
    function doReplacement(input) {
        for (var key in REPLACEMENTS) {
            input = input.replace(key, REPLACEMENTS[key]);
        }
    
        return input;
    }
    

    虽然可能不是最高效的解决方案。您可能需要问自己:您需要不区分大小写吗?单个输入是否可以包含多个需要替换的字符串?字符串本身与替换键完全相等还是包含它?

    编辑

    (已更新)正如我看到的每个更新,您可能希望对所有 h2 标记执行此操作。 试试这个代码:

    $(function() {
        var REPLACEMENTS = {
            'example-phrase': 'Example Phrase',
            'example2-phrase': 'Example 2 Phrase',
            'example-solution': 'Example & Solution'
        }
    
        function doReplacement(input) {
            for (var key in REPLACEMENTS) {
                input = input.replace(key, REPLACEMENTS[key]);
            }
    
            return input;
        }
    
        $('h2').each(function() {
            var $this = $(this);
            $this.html(doReplacement($this.html()));
        });
    });
    

    【讨论】:

    • 您拥有它的方式正是我所需要的方式。被替换的字符串总是相同的,需要替换它们的总是相同的。这段代码有什么性能障碍?
    • 这取决于您运行此程序的频率以及将有多少次替换。如果你有 20 个标题和 50 个可能的替代品,你真的不需要关心它的性能。如果您在数千个文本上运行此程序并有数百个替换,这可能会成为一个问题。
    • 啊,幸运的是只在 1 页上运行,可能只会发生 10-20 次替换。我是否需要一些其他代码才能在页面加载后立即自动运行?
    • 是的,您需要更多代码 - 此函数只是在给定字符串内进行替换。将编辑我的答案,再看看:)
    • 完美!谢谢你。回答接受,正是我需要的。我确实必须将$ 更改为jQuery 以免发生冲突(我无法确定是什么其他脚本导致它)并将h2 更改为.replacement,因此我可以将此函数与css 类一起应用。 jsfiddle.net/codeview/GSZLR
    猜你喜欢
    • 2013-12-11
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 2016-10-07
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多