【Lua】题目小练14
-- 6. 实现一个 replaceWords(s, dict),支持根据字典批量替换单词。
-- 输入:"Lua is fun", {Lua="C#", fun="great"}
-- 输出:"C# is great"
local function replaceWords(s, dict)local newStr = slocal count = 0for i, v in pairs(dict) donewStr,count = newStr:gsub(i, v)endreturn newStr end
-- 7. 将驼峰命名(camelCase)转换为下划线命名(camel_case)
local function renameToUnderLine(s)local newStr, count = s:gsub("%u", function(ch) return "_" .. ch:lower()end)return newStr endprint(renameToUnderLine("camelCase"))
-- 8. 实现一个函数,将字符串中的所有数字替换成相同数量的 *。
-- 输入:"Lua123Code"
-- 输出:"Lua***Code"
local function numberToStar(s)if type(s) ~= "string" thenprint("请输入字符串,拜托!!!")return nilendlocal s = s:gsub("%d", "*")return s endprint(numberToStar("Lua123Code"))
-- 9. 编写函数,将字符串中的中文数字(一二三四)转为阿拉伯数字(1234)。
local Chinesetbl = { "一", "二", "三", "四", "五", "六", "七", "八", "九", [0] = "零"}local function matchChineseToNumber(s)if type(s) ~= "string" thenprint("请输入字符串,拜托!!!")return nilendfor i, v in pairs(Chinesetbl) dos = s:gsub(v, i)endreturn sendprint(matchChineseToNumber("一二零三四"))
-- 10. 实现一个函数,反转字符串中每个单词的位置,但保持单词内部字母顺序不变。
local function reversedStr(s)if type(s) ~= "string" thenprint("请输入字符串,拜托!!!")return nilendlocal resultTable = {}local mod = "%w+"for part in s:gmatch(mod) dotable.insert(resultTable, part)endlocal resultTableCount = #resultTablelocal middleNumber = math.floor(resultTableCount / 2)for i = 1, middleNumber doresultTable[i], resultTable[#resultTable + 1 - i] = resultTable[#resultTable + 1 - i], resultTable[i]endreturn table.concat(resultTable, " ") endprint(reversedStr("halo")) print(reversedStr("Lua is fun"))