Преобразовать слово в верхнем регистре

1
let header=myWordDDam.

конвертировать над словом в output = "My Word DDam".

Пробовал использовать регулярное выражение

let output=header.replace(/^./, header[0].toUpperCase()).split(/(?=[A-Z])/).join(" ");

Но вывод "My Word D Dam" Застрял, если есть последовательный Uppercase. Если есть последовательный верхний регистр, он не должен добавлять пространство только в том случае, если между словом слова должен быть один верхний регистр

  • 2
    const magicFunction = (input) => "My Word DDam"
  • 0
    Если вы хотите большего, вам нужно дать нам больше информации о характере того, что вы пытаетесь сделать, и с какой проблемой вы сталкиваетесь. Вы можете проверить, как задать хороший вопрос .
Показать ещё 5 комментариев
Теги:
string

1 ответ

2
Лучший ответ

Часть .split(/(?=[AZ])/).join(" ") соответствует всем местоположениям в строке, за которыми следуют заглавные буквы, и поэтому перед каждой из них добавляются пробелы.

Вы должны потреблять куски заглавных букв 1+ и добавлять пространство перед этими целыми кусками.

Таким образом, чтобы исправить ваш текущий подход, вы можете заменить .split(/(?=[AZ])/).join(" ") .replace(/(?!^)[AZ]+/g,' $&') .split(/(?=[AZ])/).join(" ") с .replace(/(?!^)[AZ]+/g,' $&').

let header = "myWordDDam";
let output = header.replace(/^./, m => m.toUpperCase()).replace(/(?!^)[A-Z]+/g,' $&')
console.log(output);

подробности

  • .replace(/^./, m => m.toUpperCase()) - ^. соответствует первому символу и преобразует его в верхний регистр
  • .replace(/(?!^)[AZ]+/g,' $&') - соответствует любому 1+ прописным буквам ASCII (с [AZ]+) (не в начале строки - (?!^)), а текст заменяется пробелом + всем совпадением ($&).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню