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
複製程式碼