我有一组字符串需要替换,但我需要保留字母的大小写。
输入词和输出词的长度相同。
例如,如果我需要用“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/