javascript - 替换文本但保留大小写

标签 javascript

我有一组字符串需要替换,但我需要保留字母的大小写。

输入词和输出词的长度相同。

例如,如果我需要用“qwer”替换“abcd”,那么应该发生以下情况:

"AbcD" translates to "QweR"
"abCd" translates to "qwEr"

等等。

现在我正在使用 JavaScript 的 replace,但是大写字母在翻译时丢失了。

r = new RegExp( "(" + 'asdf' + ")" , 'gi' );
"oooAsdFoooo".replace(r, "qwer");

如有任何帮助,我们将不胜感激。

最佳答案

这是一个助手:

function matchCase(text, pattern) {
    var result = '';

    for(var i = 0; i < text.length; i++) {
        var c = text.charAt(i);
        var p = pattern.charCodeAt(i);

        if(p >= 65 && p < 65 + 26) {
            result += c.toUpperCase();
        } else {
            result += c.toLowerCase();
        }
    }

    return result;
}

然后你可以:

"oooAsdFoooo".replace(r, function(match) {
    return matchCase("qwer", match);
});

关于javascript - 替换文本但保留大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17264639/

相关文章:

javascript - 有没有办法使用 Node.js EventEmitter 同时向所有监听器发出结束事件?

javascript - 如何使用 nodejs express 应用程序配置 eslint

javascript - 发送 jqueryAjax 请求时出现错误

javascript - JavaScript 如何比较作为参数传入方法的对象?

javascript - 与arguments.length比较时潜在的无限循环

javascript - 音频标签,点击链接时添加src?

javascript - 如何在react.js中创建可重用的组件或部分组件?

javascript - Jest - 模拟内部 axios API 调用

javascript - 如何创建带百分比的进度条?

javascript - Jquery 日期选择器在手机和 PC 上显示不同的日期?