【问题标题】:Replacing strings in lua containing special characters替换lua中包含特殊字符的字符串
【发布时间】:2019-12-04 12:09:37
【问题描述】:

我想替换 lua 中的字符串。这是字符串。

strng='\begin{matrix}   1 & 2 & 3 \\    4 & 5 & 6 \\    7 & 8 & 10 \end{matrix}'

我想换

\begin{matrix} by {{
& by ,
\\ by },{
\end{matrix} by }}

我还想删除所有空格。所以输出将是

{{1,2,3},{4,5,6},{7,8,10}}

我编写了以下函数来执行此操作。

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

这有时有效,但有时无效。函数中一定有错误。我是lua的新手。代码可以更正吗?任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 有时它不起作用并不是最好的问题描述。提供示例输入和输出。
  • 如果输入是从其他函数传递的,它会给出意外的输出。 tempsubst(strng) 有效,但 tempsubst(somefunction(x)) 无效。请注意, somefunction(x) 将字符串作为输出。我认为撇号可能会导致问题。
  • "literal string" 内的所有反斜杠必须加倍。

标签: string replace lua substring substitution


【解决方案1】:

当与转义和反斜杠混淆时,最好使用长字符串,它不会解释这些:

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)

【讨论】:

  • 你能告诉我如何将 m1='\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 10 \end{matrix}' 转换为 m1 =[[\begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 10 \end{matrix}]]?
【解决方案2】:

首先,您的字符串包含两个转义序列"\b""\e"

我想你的意思是"\\b"?转义每个反斜杠!

那么你有问题,你在任何位置用"},{"替换"\\"。 但是在"\\end",你不希望这样。

因此,在修复转义问题后,您会得到以下输出:

{{1,2,3},{4,5,6},{7,8,10},{}}

所以要么先替换\\ends,要么更改其他模式,这样就不会影响"\\end"

编辑: 如果你从外面得到一个字符串,比如

\\

您的模式是"\\\\",因为您必须创建一个带有 2 个反斜杠的文字字符串,这需要您转义两个反斜杠,从而产生四个反斜杠。此模式匹配字符串中的两个反斜杠字符。

【讨论】:

  • 我仍然无法获得。希望我能理解。
  • @Maths89 你没有得到什么?
  • 我不能有带有 \\b 的字符串,因为它是从其他函数输出的。我不想要现成的代码,但由于代码长度不太长,你能提供可行的解决方案吗?
  • @Maths89 好吧,我刚刚使用了您的示例。如果字符串来自外部,您的模式中仍然缺少反斜杠。
  • 所以问题没有解决办法。
猜你喜欢
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
相关资源
最近更新 更多