将Lua中每个单词的首字母大写

iRy*_*ell 9 lua lua-patterns

我可以使用以下方法将字符串的第一个字母大写:

str:gsub("^%l", string.upper)
Run Code Online (Sandbox Code Playgroud)

如何修改它以大写字符串中每个单词的第一个字母?

n1x*_*xx1 10

我无法找到任何奇特的方法来做到这一点.

str = "here you have a long list of words"
str = str:gsub("(%l)(%w*)", function(a,b) return string.upper(a)..b end)
print(str)
Run Code Online (Sandbox Code Playgroud)

这个代码输出在这里你有一个很长的单词列表.%w*可以改为%w+不替换一个字母的单词.


Fancier解决方案:

str = string.gsub(" "..str, "%W%l", string.upper):sub(2)
Run Code Online (Sandbox Code Playgroud)

由于lua的模式系统很简单,因此无法替换真正的单正则表达式.

  • 如果你有一个带撇号的单词,它也会将撇号后的第一个字母大写,例如:“这是一长串单词”输出“这是一长串单词”——试图找到一个修复 (2认同)