我有一串“单词”,如下所示:fIsh mOuntain rIver
。单词用空格分隔,我在字符串的开头和结尾添加了空格,以简化“单词”的定义。
我需要将包含A
,B
或C
的任何字词替换为1
,包含X
,Y
的所有字词,或Z
与2
,以及所有剩余的3
字词,例如:
the CAT ATE the Xylophone
首先,用A
替换包含B
,C
或1
的字词,字符串变为:
the 1 1 the Xylophone
接下来,将包含X
,Y
或Z
的字词替换为2
,字符串变为:
the 1 1 the 2
最后,它用3
替换所有剩余的单词,例如:
3 1 1 3 2
最终输出是一个只包含数字的字符串,其间的空格为。
$5鱼fish
可以是一个单词。定义单词开头和结尾的唯一特征是空格。ZebrA
只是替换为1
。如何用数字替换包含这些特定字符的所有单词,最后用3
替换所有剩余单词?
答案 0 :(得分:7)
请尝试以下代码:
function replace(str)
return (str:gsub("%S+", function(word)
if word:match("[ABC]") then return 1 end
if word:match("[XYZ]") then return 2 end
return 3
end))
end
print(replace("the CAT ATE the Xylophone")) --> 3 1 1 3 2
答案 1 :(得分:1)
slnunicode模块提供UTF-8字符串函数。
答案 2 :(得分:0)
Lua中的gsub
函数/方法用于替换字符串并检查字符串在字符串中的查找次数。 gsub(string old, string from, string to)
local str = "Hello, world!"
newStr, recursions = str:gsub("Hello", "Bye"))
print(newStr, recursions)
再见,世界! 1
newStr是“再见,世界!”因为from
更改为to
且递归为1,因为“Hello”(from
)仅在str中创建一次。