Почему это совпадение с шаблоном lua не удаляет '. xml', включая.? - PullRequest
1 голос
/ 06 мая 2020
function getXMLBaseFileName(filename)
  try = filename:match("^(.+)\.xml$")
  if try == nil then
      return filename
  else
      return try
  end
end

Когда дано имя файла, например «foo. xml», я верну «foo.» так что включая точку, но это вне пары ().

Ответы [ 2 ]

5 голосов
/ 06 мая 2020

Опубликованный вами код не компилируется, потому что \. не является допустимой Lua строковой escape-последовательностью. Вы неправильно пытаетесь экранировать символ .; вам нужно использовать шаблон escape, а не Lua string escape. В частности, "^(.+)%.xml$". Как только вы это сделаете, ваш код будет работать нормально.

0 голосов
/ 06 мая 2020
function getXMLBaseFileName(filename)
   return (filename:gsub("%.xml$", ""))
   -- www.lua.org/manual/5.3/manual.html#pdf-string.gsub
end

print(getXMLBaseFileName('foo.xml'))

:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...