我在包含子目录和markdown文件的“content”文件夹的目录树中循环。然后我需要知道那些“内容”文件夹中降价的相对路径。
在bash脚本中我会做类似的事情:
CONTENT_PATH="/home/myusr/apps/myapp/content"
file_path="/home/myusr/apps/myapp/content/file/pgp.md"
echo "${file_path#$CONTENT_PATH}"
# /file/pgp.md
所以在Lua我没有找到类似的东西,所以我试过string.gsub()
:
print(string.gsub(file_path, CONTENT_PATH, ""))
-- /home/myusr/apps/myapp/content/file/pgp.md 0
但它不起作用,似乎我的CONTENT_PATH字符串不匹配,我不知道为什么?
print(CONTENT_PATH)
-- /home/hs0ucy/_01_http/fakestache-lua/content
print(file_path)
-- /home/hs0ucy/_01_http/fakestache-lua/content/file/pgp.md
谢谢!
PS:我是Lua的新手。答案 0 :(得分:1)
来自:Lua string.gsub with a hyphen
连字符是Lua中的一个特殊字符,需要像这样转义:%-
。
我发现这一点,慢慢地让CONTENT_PATH
越来越长,直到它不再有效。好的'二分搜索!
编辑:如果您无法修改CONTENT_PATH
,但您确定file_path
中有CONTENT_PATH
:
contentPathLen = string.len(CONTENT_PATH)
print(string.sub(file_path, contentPathLen + 1))
-- Output: /file/pgp.md
或者,如果您需要验证file_path
是否以CONTENT_PATH
开头:
base = string.sub(file_path, 0, contentPathLen)
if base == CONTENT_PATH then
print("file_path is under CONTENT_PATH")
end