lua自動化指令碼關於文字讀寫和特殊不可見字元轉換的處理

qylcx7758發表於2018-09-18

lua自動化指令碼關於文字讀寫和特殊不可見字元轉換的處理

因為lua在讀寫文字中可能還會碰到一些比較變態的不可見字元,%s," "這些轉換不了,所以需要做特殊的處理。 參考菜鳥教程的字串操作

  1. 將文字頭部部分的空白和其他不可見字元全部去除:
	function trimStr (s) 
	    return string.gsub(s, "^%W+", "")
	    -- %W代表所有非標點和數字
	end
複製程式碼
  1. 將文字中的不可見字元全部用空白代替,以與原樣式長度保持一致,結合3使用:
-- 舉例,adb命令輸出文字
	function writeInput()
		 local str="            qwerty...      "  
	   str=string.gsub(str, "[^%w%p%s]", " ")
	    str="\""..str.."\""
	    os.execute("input text "..str)
	end

複製程式碼
  1. 將文字中的中的空白保留,並在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
複製程式碼
  1. 終極版: 讀取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
複製程式碼

相關文章