lua自动化脚本关于文本读写和特殊不可见字符转换的处理
因为lua在读写文本中可能还会碰到一些比较变态的不可见字符,%s," "这些转换不了,所以需要做特殊的处理。 参考菜鸟教程的字符串操作
- 将文本头部部分的空白和其他不可见字符全部去除:
function trimStr (s)
return string.gsub(s, "^%W+", "")
-- %W代表所有非标点和数字
end
复制代码
- 将文本中的不可见字符全部用空白代替,以与原样式长度保持一致,结合3使用:
-- 举例,adb命令输出文字
function writeInput()
local str=" qwerty... "
str=string.gsub(str, "[^%w%p%s]", " ")
str="\""..str.."\""
os.execute("input text "..str)
end
复制代码
- 将文本中的中的空白保留,并在adb shell中进行输出 因为在adb中的input text并不允许直接输入空白,此时要么调用
os.execute("input keyevent KEYCODE_SPACE")
键盘事件,但是这样对于不确定和复杂的文本内容不方便,所以考虑对os.execute("input text "..str)
中的str做转义处理,使其中的空白字符转成字符串,如下:
function blankStr(s)
return "\""..s.."\""
end
--
--举例,adb命令输出带空白的文字,可以结合1使用
function writeInput()
local str="I am looking for your... "
str=blankStr(str)
os.execute("input text "..str)
end
复制代码
- 终极版: 读取txt文件,结合2,3用adb命令将文本中的内容与原格式一致进行输出: 可以参考菜鸟教程的I/0基本操作
-- 将文本中的不可见字符都转换成空格,并且转换成字符串,以便input text进行输出
function formatStr(s)
local str=string.gsub(s, "[^%w%p%s]", " ")
str="\""..str.."\n\""
return str
end
function readFile(text)
-- text是文本的路径
local lines=io.lines(text)
for line in lines
do
local str=formatStr(line )
os.execute("input text "..str)
end
end
复制代码