Javascript 如果匹配特定单词,大写前 x 个字符?
Javascript Uppercase first x characters if matching specific words?
我正在尝试 javascript / jquery 如何将字符串的前 3 个字符大写,如果该字符串以多个匹配项之一开头。
在php我能做到:
$loc = (preg_match("/^(nww|nsw|esw|sew|wes)/i", $loc)) ? strtoupper( substr( $loc, 0, 3 ) ).substr( $loc, 3 ) : ucfirst($loc);
这会将 nsw48751
更改为 NSW48751
,但将 newlease 更改为 Newlease。
如何在 javascript 或 jquery 中执行此操作?
谢谢
一个选项是交替匹配这 3 个字母中的任何一个,如果找到 none 个字母,则匹配字符串中的第一个字母。然后,使用替换函数将匹配项大写:
const change = str => str.replace(/^(?:nww|nsw|esw|sew|wes|[a-z])/i, match => match.toUpperCase());
console.log(change('nsw48751'));
console.log(change('newlease'));
可以使用 RegExp.test() 检查正则表达式是否满足您的条件,顺便说一句,CertainPerformance 的解决方案很棒!
var string1 = 'nsw48751';
var string2 = 'newLetter';
function foo (str) {
r = /^(nww|nsw|esw|sew|wes)/i
if (r.test(str)) {
return str.substring(0,3).toUpperCase() + str.substring(3)
}
return str.substring(0,1).toUpperCase() + str.substring(1)
}
console.log(foo(string1));
console.log(foo(string2));
我正在尝试 javascript / jquery 如何将字符串的前 3 个字符大写,如果该字符串以多个匹配项之一开头。
在php我能做到:
$loc = (preg_match("/^(nww|nsw|esw|sew|wes)/i", $loc)) ? strtoupper( substr( $loc, 0, 3 ) ).substr( $loc, 3 ) : ucfirst($loc);
这会将 nsw48751
更改为 NSW48751
,但将 newlease 更改为 Newlease。
如何在 javascript 或 jquery 中执行此操作?
谢谢
一个选项是交替匹配这 3 个字母中的任何一个,如果找到 none 个字母,则匹配字符串中的第一个字母。然后,使用替换函数将匹配项大写:
const change = str => str.replace(/^(?:nww|nsw|esw|sew|wes|[a-z])/i, match => match.toUpperCase());
console.log(change('nsw48751'));
console.log(change('newlease'));
可以使用 RegExp.test() 检查正则表达式是否满足您的条件,顺便说一句,CertainPerformance 的解决方案很棒!
var string1 = 'nsw48751';
var string2 = 'newLetter';
function foo (str) {
r = /^(nww|nsw|esw|sew|wes)/i
if (r.test(str)) {
return str.substring(0,3).toUpperCase() + str.substring(3)
}
return str.substring(0,1).toUpperCase() + str.substring(1)
}
console.log(foo(string1));
console.log(foo(string2));