Javascript如果与特定单词匹配,则大写的前x个字符?

时间:2018-11-01 09:24:48

标签: javascript jquery uppercase capitalization

如果该字符串以多个匹配项之一开头,我正在尝试在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中做到这一点?

谢谢

2 个答案:

答案 0 :(得分:3)

一个选项是在匹配这3个字母中的任何一个之间交替,如果没有找到,则匹配字符串中的第一个字母。然后,使用替换函数将匹配项大写:

const change = str => str.replace(/^(?:nww|nsw|esw|sew|wes|[a-z])/i, match => match.toUpperCase());
console.log(change('nsw48751'));
console.log(change('newlease'));

答案 1 :(得分:1)

可以使用RegExp.test()来检查正则表达式是否满足您的条件,并确定SomePerformance的解决方案很棒!

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));

相关问题