如何使用 string.replace() 保留字符大小写?
How to preserve character case using string.replace()?
我正在尝试编写一个函数,将字符串中的所有元音替换为最终用户选择的另一个任意元音。到目前为止,我已经能够编写一个函数来替换所有元音而不考虑大小写,但我希望能够在 replace()
.
期间保留大小写
这是我现在正在做的一个例子。
var selectedVowel = "a";
var vowels = /[aeiouAEIOU]/gi;
function rep(string){
let newString = string.replace(vowels, selectedVowel);
return newString;
}
rep("FooBar Exe. unIt");
// returns "FaaBar axe. anat"
// Intended output should return "FaaBar Axe. anAt"
我曾尝试使用正则表达式来修改 replace()
和 selectedVowel
的搜索条件,但我不知道如何使用正确的正则表达式字符来实现这一目标。
我也研究过使用 split()
替换单词首字母的方法,但这种方法似乎仅限于字符串的索引,这在函数调用时是未知的.
有什么建议吗?
String.prototype.replace()
用函数代替替换字符串,每次匹配都会调用该函数。
您可以编写一个函数来检查每个匹配项并将其替换为 selectedVowel
原样或大写,具体取决于匹配字符串的大小写。
检查字符是否为 upper/lowercase 的一个小技巧是将其与自身的 upper/lowercased 版本进行比较,如 match === match.toUpperCase()
.
var selectedVowel = "a";
var vowels = /[aeiouAEIOU]/gi;
function rep(string){
return string.replace(vowels, match => {
if (match === match.toUpperCase()) {
return selectedVowel.toUpperCase()
}
return selectedVowel
});
}
console.log(rep("FooBar Exe. unIt")) //=> "FaaBar Axa. anAt"
我正在尝试编写一个函数,将字符串中的所有元音替换为最终用户选择的另一个任意元音。到目前为止,我已经能够编写一个函数来替换所有元音而不考虑大小写,但我希望能够在 replace()
.
这是我现在正在做的一个例子。
var selectedVowel = "a";
var vowels = /[aeiouAEIOU]/gi;
function rep(string){
let newString = string.replace(vowels, selectedVowel);
return newString;
}
rep("FooBar Exe. unIt");
// returns "FaaBar axe. anat"
// Intended output should return "FaaBar Axe. anAt"
我曾尝试使用正则表达式来修改 replace()
和 selectedVowel
的搜索条件,但我不知道如何使用正确的正则表达式字符来实现这一目标。
我也研究过使用 split()
替换单词首字母的方法,但这种方法似乎仅限于字符串的索引,这在函数调用时是未知的.
有什么建议吗?
String.prototype.replace()
用函数代替替换字符串,每次匹配都会调用该函数。
您可以编写一个函数来检查每个匹配项并将其替换为 selectedVowel
原样或大写,具体取决于匹配字符串的大小写。
检查字符是否为 upper/lowercase 的一个小技巧是将其与自身的 upper/lowercased 版本进行比较,如 match === match.toUpperCase()
.
var selectedVowel = "a";
var vowels = /[aeiouAEIOU]/gi;
function rep(string){
return string.replace(vowels, match => {
if (match === match.toUpperCase()) {
return selectedVowel.toUpperCase()
}
return selectedVowel
});
}
console.log(rep("FooBar Exe. unIt")) //=> "FaaBar Axa. anAt"