Javascript 将/和-字符后的每个字母大写
我试图将Javascript 将/和-字符后的每个字母大写,javascript,regex,Javascript,Regex,我试图将/或-字符后的每个字母大写。意思是,如果给定字符串 this/is/a/pretty-cool/url 它的预期产出将是 This/Is/A/Pretty-Cool/Url 我的代码: string = string.replace(/\/(\b[a-z](?!\s))/g, function(i,e) { return '/'+e.toUpperCase() }); 目前返回的 this/Is/A/Pretty-cool/Url 显然,不完全是这样 我如何才能使其按预期工作?这
/
或-
字符后的每个字母大写。意思是,如果给定字符串
this/is/a/pretty-cool/url
它的预期产出将是
This/Is/A/Pretty-Cool/Url
我的代码:
string = string.replace(/\/(\b[a-z](?!\s))/g, function(i,e) { return '/'+e.toUpperCase() });
目前返回的
this/Is/A/Pretty-cool/Url
显然,不完全是这样
我如何才能使其按预期工作?这里有一个简单的解决方案:
string = string.replace(/(^|\/|-)(\S)/g, s=>s.toUpperCase())
您只需在字符串开头后匹配一个字符,即/
或-
。这很简单,因为将其中一个字符大写没有问题('/'.toUpperCase()
是'/'
)
现在,让我们假设您不想将第一部分大写(可能在实际问题中不同,可能您关心的是必须将a“/”
)大写的糟糕函数),那么您将使用如下子匹配:
string = string.replace(/(^|\/|-)(\S)/g, (_,a,b)=>a+b.toUpperCase())
(但你不必走到这样的极端)从你的代码开始,你就缺少了
-
字符
因此,更改代码以支持您可以使用的字符:
var string = string.replace(/(^|\/|-)(\b[a-z](?!\s))/g, function(i,e) { return i.charAt(0)+e.toUpperCase() });
或
下面是另一个变体,它在任何非单词字符之后以及字符串的开头使用大写字母:
string = string.replace(/(^|\W)(\w)/g, (match, a, b) => a + b.toUpperCase());
(或使用与@DenysSéguret相同的捷径):
您的问题陈述不完整-您似乎还想将找到的第一个字符大写。向下投票者:请告诉我,有什么问题?
string = string.replace(/(^|\W)(\w)/g, (match, a, b) => a + b.toUpperCase());
string = string.replace(/(^|\W)(\w)/g, s => s.toUpperCase());