Sim*_*mer 24 regex letter capitalize
我使用它#(\s|^)([a-z0-9-_]+)#i来为每个单词的每个首字母大写,我希望它也可以大写字母,如果它是在一个特殊标记之后,如破折号( - )
现在它显示:
This Is A Test For-stackoverflow
Run Code Online (Sandbox Code Playgroud)
我想要这个:
This Is A Test For-Stackoverflow
Run Code Online (Sandbox Code Playgroud)
对我有什么建议/样品吗?
我不是专业人士,所以尽量让我理解.
Kob*_*obi 20
一个简单的解决方案是使用单词边界:
#\b[a-z0-9-_]+#i
Run Code Online (Sandbox Code Playgroud)
或者,您可以匹配几个字符:
#([\s\-_]|^)([a-z0-9-_]+)#i
Run Code Online (Sandbox Code Playgroud)
小智 20
字边界为+1,这是一个类似的Javascript解决方案.这也占有所有权:
var re = /(\b[a-z](?!\s))/g;
var s = "fort collins, croton-on-hudson, harper's ferry, coeur d'alene, o'fallon";
s = s.replace(re, function(x){return x.toUpperCase();});
console.log(s); // "Fort Collins, Croton-On-Hudson, Harper's Ferry, Coeur D'Alene, O'Fallon"
Run Code Online (Sandbox Code Playgroud)
Jai*_*man 14
如果您想使用纯正则表达式,则必须使用\u.
要转换该字符串:
这是一个针对 stackoverflow 的测试
进入
这是一个 Stackoverflow 测试
您必须输入:
(.+)-(.+)以捕获“-”之前和之后的值,然后要替换它,您必须输入:
$1-\u$2
如果是在 bash 中,你必须输入:
echo "This Is A Test For-stackoverflow" | sed 's/\(.\)-\(.\)/\1-\u\2/'
实际上不需要匹配完整的字符串只匹配第一个非大写字母,如下所示:
'~\b([a-z])~'
Run Code Online (Sandbox Code Playgroud)