Javascript Прописные первые x символов, если соответствуют определенным словам? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь в 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 голосов
/ 01 ноября 2018

Можно использовать 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));
0 голосов
/ 01 ноября 2018

Один из вариантов - чередовать совпадения с любой из этих 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'));
...