js, как в строке в каждом слове сделать первую букву в верхний регистр?

72
09 октября 2021, 05:30

как в строке в каждом слове сделать первую букву в верхний регистр ? Точнее как сделать это регуляркой ?

Answer 1

let str = 'исходная Строка дЛЯ теста'; 
 
let res = str.replace(/(?:^|\s)(\S)/ug, m => m.toUpperCase()); 
 
console.log(res);

  • (?:^|\s) - начало строки или пробельный символ
  • (\S) - непробельный символ с захватом для замены

Насколько я знаю, в js regexp нет аналога \b для unicode.

В некоторых случаях, эта регулярка не подойдёт(из-за отсутствия пробелов): а,б,в

Проще всего использовать класс \p{L}:

let str = 'исходная Строка дЛЯ теста(раз,два,три)'; 
 
let res = str.replace(/(?:^|[^\p{L}])(\p{L})/ug, m => m.toUpperCase()); 
 
console.log(res);

Answer 2

Если среда поддерживает стандарт ECMAScript 2018, можно использовать (?<![\p{L}\p{N}_]) в качестве альтернативы границе слова \b и \p{Ll} для поиска любой буквы в нижнем регистре (\p{L} найдет любые буквы, которые уже могут быть в верхнем регистре):

var rx = /(?<![\p{L}\p{N}_])\p{Ll}/gu; 
var s = "наша новая,короткая строка.и тут ещё предложение."; 
console.log(s.replace(rx, $0 => $0.toUpperCase()));

  • (?<![\p{L}\p{N}_]) - блок предварительного просмотра назад, находит место в строке, перед которым нет буквы, цифры или _
  • \p{Ll} - буква в нижнем регистре.

Если нет поддержки ECMAScript 2018, нужна либо библиотека XRegExp, либо выражение, содержащее диапазоны поддерживаемых букв:

var rx = /(?:^|[^а-яА-ЯёЁA-Za-z0-9_])[a-zа-яё]/gu; 
var s = "наша новая,короткая строка.and another sentence."; 
console.log(s.replace(rx, function($0) { return $0.toUpperCase(); })); 
 
var xrx = XRegExp("(?:^|[^\\pL\\pN_])\\p{Ll}", "g"); 
console.log(XRegExp.replace(s, rx, function($0) { return $0.toUpperCase(); }));
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/3.2.0/xregexp-all.min.js"></script>

READ ALSO
Uncaught ReferenceError: changeImportant is not defined

Uncaught ReferenceError: changeImportant is not defined

Я делаю простую todo программу с помощью vuejs, при запуске программа выдаёт ошибку: Todo

127
SPA на React, как прокинуть пропс

SPA на React, как прокинуть пропс

Задача заключается в том, чтобы пробросить ID элемента в новый React компонент

122
Как удалить теги на странице?

Как удалить теги на странице?

через код kodjs подгружаются данные на html страницу

94