Заглавная буква каждого слова в Lua
Я могу использовать первую букву моей строки, используя:
str:gsub("^%l", string.upper)
Как я могу изменить это, чтобы сделать заглавной первую букву каждого слова в строке?
3 ответов
Я не смог найти любой другой способ сделать это.
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 проста.
в альтернативном ответе вы получаете несогласованные результаты со словами, содержащими апострофы:
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)
исправит любые проблемы, вызванные этим странным жуком
function titleCase( first, rest )
return first:upper()..rest:lower()
end
string.gsub(str, "(%a)([%w_']*)", titleCase)
BunchOfText {"Yeppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp"}