Мога да напиша главна първата буква от моя низ, използвайки:
str:gsub("^%l", string.upper)
Как мога да променя това, за да изписвам с главна първата буква на всяка дума в низа?
Мога да напиша главна първата буква от моя низ, използвайки:
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)
Този изходен код е Тук имате дълъг списък от думи. %w*
може да се промени на %w+
, за да не се заместват думи от една буква.
По-луксозно решение:
str = string.gsub(" "..str, "%W%l", string.upper):sub(2)
Невъзможно е да се направи истинска замяна на единичен регулярен израз, защото системата за шаблони на lua е проста.
в изброения алтернативен отговор получавате противоречиви резултати с думи, съдържащи апострофи:
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)
ще коригира всички проблеми, причинени от тази странна грешка
"%f%l"
? - person OGHaza   schedule 29.11.2013%f%l
тези регулярни изрази винаги ме карат на нов език. - person iRyanBell   schedule 29.11.2013"%A%l"
‹- бах, току-що разбрах, че дори и това да работи, както си мисля, че може в главата ми, пак няма да пише главна първата буква от низ, а само следващите думи. - person OGHaza   schedule 29.11.2013%A%l
изглежда хваща първата буква от всяка дума, с изключение на първия знак от низа. - person iRyanBell   schedule 29.11.2013