【问题标题】:Extract various characters from string (Alternate method)从字符串中提取各种字符(替代方法)
【发布时间】:2012-06-27 07:32:25
【问题描述】:

好的,我有一些乱码的文本字符串,我想从字符串中提取小写字符、大写字符和数值为三个子字符串,然后将它们用于我的目的。我目前有这样的代码:

sInput = "AWSEDRGY VGIYCfry2345ewScfvg gyiFvyGXSCyuI^RSfv GYD&K^dfyUODvl234SDv8p7ogYHS"
local sLower, sUpper, sNumbers = "", "", ""
sInput:gsub("%l", function(s)  sLower=sLower..s end)
sInput:gsub("%u", function(s)  sUpper=sUpper..s end)
sInput:gsub("%d", function(s)  sNumbers=sNumbers..tostring(s) end)
print( sLower, sUpper, sNumbers )

这工作正常。我只是不确定将这三个单独的提取用于近 30,000 行此类乱码文本。有没有更有效的方法?还是我的方式是最好的解决方案?

【问题讨论】:

    标签: regex lua text-extraction


    【解决方案1】:

    尝试使用补类

    sInput = "AWSEDRGY VGIYCfry2345ewScfvg gyiFvyGXSCyuI^RSfv GYD&K^dfyUODvl234SDv8p7ogYHS"
    local sLower = sInput:gsub("%L","")
    local sUpper = sInput:gsub("%U","")
    local sNumbers = sInput:gsub("%D","")
    print( sLower, sUpper, sNumbers )
    

    【讨论】:

    • 你能解释一下它的工作原理吗?另外,使用[^%l] 是否与%L 相同
    • 你说得对,使用%L 等更简单。我已经编辑了我的答案。
    • 但是,%L 是如何提取小写模式的?
    • gsub("%L","") 表示“将所有不是小写字母的字符替换为空”。
    • 哦,是的!完全忘记了 gsub 也可以用来替换字符。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 2021-09-06
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 2013-01-13
    • 2012-04-01
    相关资源
    最近更新 更多