我可以使用以下方法将字符串的第一个字母大写:
str:gsub("^%l", string.upper)
如何修改它以将字符串中每个单词的首字母大写?
我找不到任何花哨的方法来做到这一点。
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)
此代码输出是Here You Have A Long List Of Words。%w*
可以更改为%w+
不替换一个字母的单词。
更高级的解决方案:
str = string.gsub(" "..str, "%W%l", string.upper):sub(2)
由于 lua 的模式系统很简单,因此不可能进行真正的单正则表达式替换。
在列出的替代答案中,您会得到与包含撇号的单词不一致的结果:
str = string.gsub(" "..str, "%W%l", string.upper):sub(2)
将每个撇号后的第一个字母大写,无论它是否是单词中的第一个字母
例如:“here's a long list of words”输出“Here's A Long List Of Words”
利用此代码:
function titleCase( first, rest )
return first:upper()..rest:lower()
end
string.gsub(str, "(%a)([%w_']*)", titleCase)
将修复由那个奇怪的错误引起的任何问题
function titleCase( first, rest )
return first:upper()..rest:lower()
end
string.gsub(str, "(%a)([%w_']*)", titleCase)
BunchOfText {"Yeppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp"}