我可以使用以下方法将字符串的第一个字母大写:
str:gsub("^%l", string.upper)
如何修改它以大写字符串中每个单词的第一个字母?
答案 0 :(得分: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)
此代码输出这里有一长串单词。 %w*
可以更改为%w+
,不能替换一个字母的单词。
Fancier解决方案:
str = string.gsub(" "..str, "%W%l", string.upper):sub(2)
由于lua的模式系统很简单,因此无法替换真正的单正则表达式。
答案 1 :(得分:0)
在列出的替代答案中,使用包含撇号的单词会得到不一致的结果:
str = string.gsub(" "..str, "%W%l", string.upper):sub(2)
如果它是单词
例如:“这里有一长串单词”输出“这里有一长串单词”
使用此代码:
function titleCase( first, rest )
return first:upper()..rest:lower()
end
string.gsub(str, "(%a)([%w_']*)", titleCase)
将解决由这个奇怪的错误引起的任何问题
答案 2 :(得分:0)
function titleCase( first, rest )
return first:upper()..rest:lower()
end
string.gsub(str, "(%a)([%w_']*)", titleCase)
BunchOfText {"Yeppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp"}