I want to replace string in lua. Here is the string.
strng='\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 10 \end{matrix}'
I want to replace
\begin{matrix} by {{
& by ,
\\ by },{
\end{matrix} by }}
I also want to remove all spaces. So the output will be
{{1,2,3},{4,5,6},{7,8,10}}
I have written the following function to do this.
function tempsubst(m1)
m1 = matrixprint(m1)
if type(m1) ~="string" then return m1 end
m1 = string.gsub(m1,"\begin%{matrix%}","{{" )
m1 = string.gsub(m1,"\\","},{" )
m1 = string.gsub(m1,"%&","," )
m1 = string.gsub(m1,"end%{matrix%}","}}" )
m1= string.gsub(m1 , "%s+", "")
return m1
end
This sometimes work but sometimes it does not work. There must be mistakes in the function. I am newbie to lua. Could the code be corrected? Any help will be appreciated. Thanks.
解决方案
When confused with escapes and backslashes, it's better to use long strings, which don't interpret those:
m1=[[\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 10 \end{matrix}]]
print(m1)
m1 = string.gsub(m1,[[\begin{matrix}]],"{{" )
m1 = string.gsub(m1,[[\\]],"},{" )
m1 = string.gsub(m1,[[&]],"," )
m1 = string.gsub(m1,[[\end{matrix}]],"}}" )
m1= string.gsub(m1 , [[%s+]], "")
print(m1)