gpt4 book ai didi

javascript - 字符串用 1 和 10 替换多个字符串麻烦

转载 作者:行者123 更新时间:2023-12-02 14:11:14 28 4
gpt4 key购买 nike

我正在尝试替换字符串中的多个单词/字符串并在此处测试了所有建议的解决方案 How to replace all occurrences of a string in JavaScript?

它们都有效,直到我不得不同时替换 color_1color_10。现在 color_10 替换是 color_1 的一部分,末尾是 0。

https://jsfiddle.net/fqqLdxkz/1/

string = 'padding:0px 0px 0px 0px;margin:0px auto 0px auto;background-color:color_9;color_1;color_5;color_4;color_10;';
var palettes = {
"theme": "{\"color_1\":\"#454545\",\"color_2\":\"#40b1e2\",\"color_3\":\"#efefef\",\"color_4\":\"#fafafa\",\"color_5\":\"#cccccc\",\"color_6\":\"#e91e63\",\"color_7\":\"#e91e63\",\"color_8\":\"#e74c3c\",\"color_9\":\"#2c3e50\",\"color_10\":\"#344957\"}"
}

function PaletteColor(css) {


if (css.indexOf('color_') !== -1) {

var $palette = JSON.parse(palettes.theme);

$.each($palette, function(name, color) {
// css = css.replace(new RegExp(name, 'g'), color);
css = css.split(name).join(color);
});

}

return css;
}
$('#result').html(PaletteColor(string));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<div id="result">...</div>

我错过了什么?

更新:使用 json 反转进行测试,color_10 首先 color_1 最后,
它有效https://jsfiddle.net/fqqLdxkz/2/

但这没有任何意义,因为看起来它首先替换索引而不是值。

最佳答案

您可以在正则表达式中放置字边界断言 \b,这样 color_1\b 就不会匹配 color_10

var string = 'padding:0px 0px 0px 0px;margin:0px auto 0px auto;background-color:color_9;color_1;color_5;color_4;color_10;';
var palettes = {
theme: {"color_1":"#454545","color_2":"#40b1e2","color_3":"#efefef","color_4":"#fafafa","color_5":"#cccccc","color_6":"#e91e63","color_7":"#e91e63","color_8":"#e74c3c","color_9":"#2c3e50","color_10":"#344957"}
}

function paletteColor(css) {
if (css.indexOf('color_') !== -1) {
var $palette = palettes.theme;

$.each($palette, function(name, color) {
css = css.replace(new RegExp('\\b' + name + '\\b', 'g'), color);
});
}
return css;
}

$('#result').html(paletteColor(string));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<div id="result">...</div>

关于javascript - 字符串用 1 和 10 替换多个字符串麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39552726/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com