使用多个大写字母将名称设为大写
Make name uppercase with multiple capital letters
基本上,我想执行以下操作:
McDonald => McDONALD
McDowell => McDOWELL
McIntosh => McINTOSH
etc.
我也在研究 iPhone => iPHONE 之类的东西,但我可能只会为此使用一组列表。但是,名称会定期更改,保留 运行 个列表会带来不便。
这可以吗?我在看正则表达式,但我想不出没有后视的方法(我正在使用 JavaScript)。
这似乎有效:
var convertName = function(name){
var pattern=/^(.*?[a-z][A-Z])(.*)$/g;
if(pattern.test(name)){
return name.replace(pattern,function(t,a,b){
return a+b.toUpperCase();
});
}
else{
return name.toUpperCase();
}
};
它基本上是在第一个小写字母之后查找第一个大写字母,将第一部分与其余部分分开,并将其余部分设为大写。只有在找到这样的模式时才会发生这种情况。否则它只是 returns 大写的名称。
用法
convertName('McDonald'); // McDONALD
convertName('McDowell'); // McDOWELL
convertName('McIntosh'); // McINTOSH
convertName('iPhone'); // iPHONE
convertName('Smith'); // SMITH
替换多个实例
最简单的方法是匹配每组字母并将其放入函数中。您可以使用:
"Word, test, “words”, McIntosh is a name, just like Herbert-McIntosh. So much upper-case.".replace(/(\w+)/g,function(t,w){
return convertName(w);
});
// "WORD, TEST, “WORDS”, McINTOSH IS A NAME, JUST LIKE HERBERT-McINTOSH. SO MUCH UPPER-CASE."
// Prefix after a dash ^^^
基本上,我想执行以下操作:
McDonald => McDONALD
McDowell => McDOWELL
McIntosh => McINTOSH
etc.
我也在研究 iPhone => iPHONE 之类的东西,但我可能只会为此使用一组列表。但是,名称会定期更改,保留 运行 个列表会带来不便。
这可以吗?我在看正则表达式,但我想不出没有后视的方法(我正在使用 JavaScript)。
这似乎有效:
var convertName = function(name){
var pattern=/^(.*?[a-z][A-Z])(.*)$/g;
if(pattern.test(name)){
return name.replace(pattern,function(t,a,b){
return a+b.toUpperCase();
});
}
else{
return name.toUpperCase();
}
};
它基本上是在第一个小写字母之后查找第一个大写字母,将第一部分与其余部分分开,并将其余部分设为大写。只有在找到这样的模式时才会发生这种情况。否则它只是 returns 大写的名称。
用法
convertName('McDonald'); // McDONALD
convertName('McDowell'); // McDOWELL
convertName('McIntosh'); // McINTOSH
convertName('iPhone'); // iPHONE
convertName('Smith'); // SMITH
替换多个实例
最简单的方法是匹配每组字母并将其放入函数中。您可以使用:
"Word, test, “words”, McIntosh is a name, just like Herbert-McIntosh. So much upper-case.".replace(/(\w+)/g,function(t,w){
return convertName(w);
});
// "WORD, TEST, “WORDS”, McINTOSH IS A NAME, JUST LIKE HERBERT-McINTOSH. SO MUCH UPPER-CASE."
// Prefix after a dash ^^^