大写转换单词

时间:2018-10-08 18:26:12

标签: javascript regex string

let header=myWordDDam.

将以上单词转换为output =“我的单词DDam”。

使用正则表达式

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

但是输出是“ My Word D Dam” 如果连续使用大写,则卡住。如果有连续的大写字母,则仅当单词之间应有一个大写字母时,才应追加空格

1 个答案:

答案 0 :(得分:2)

.split(/(?=[A-Z])/).join(" ")部分匹配字符串中的所有位置,后跟一个大写字母,因此在每个位置之前都添加了空格。

您需要使用1个以上大写字母的大块,并在所有大块前添加一个空格。

因此,要解决当前的问题,可以将.split(/(?=[A-Z])/).join(" ")替换为.replace(/(?!^)[A-Z]+/g,' $&')

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

详细信息

  • .replace(/^./, m => m.toUpperCase())-^.匹配第一个字符并将其转换为大写字母
  • .replace(/(?!^)[A-Z]+/g,' $&')-匹配任意1个以上的大写ASCII字母(带有[A-Z]+)(而不是字符串的开头-(?!^)),并且文本被空格+整个整数替换匹配($&