【问题标题】:How to remove white spaces after "(" in string?如何删除字符串中“(”之后的空格?
【发布时间】:2021-04-02 01:38:32
【问题描述】:

这里是一个 lua 新手。

我想用'$\\psi\\left(y\\right)$' 替换字符串'$\\psi\\left( y\\right)$',即删除出现在( 之后和下一个非空白字符之前的所有空格。

我一直在尝试gsub,但每次尝试都没有成功。这是我尝试过的

function foo(s)
print('before s = '..s)
str=string.gsub(s,"\\left(  ","\\left(")
print('after s= '..str)
return str
end

尝试过

function foo(s)
print('before s = '..s)
str=string.gsub(s,"\\left(%s+","\\left(")
print('after s= '..str)
return str
end

以及其他一些变化。但是每次我调用函数如下

 foo('$\\psi\\left(  y\\right)$')

返回的字符串是一样的。空白仍然存在。

这样做的正确方法是什么?在 Linux 上使用 Lua 5.2.4

我打算在lualatex内部使用这个函数,这些字符串会从latex作为字符串传递给lua。但是我现在在 Linux 上的独立 lua 安装中尝试这个功能,在我在 Lualatex 中使用它之前先看看它是否有效。

【问题讨论】:

  • 你可以尝试使用正则表达式,它应该更容易

标签: lua


【解决方案1】:

( 等魔术字符需要转义。

请参考https://www.lua.org/manual/5.3/manual.html#6.4.1

"\\left(%s+" 替换为"\\left%(%s+" 或将"\\left( +" 替换为"\\left%( +"

在我看来像一些错误。这实际上应该导致“未完成的捕获”错误。如果( 是模式中的第一个字符,至少会这样。

【讨论】:

    猜你喜欢
    • 2023-01-10
    • 1970-01-01
    • 2013-09-23
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    相关资源
    最近更新 更多