2013-06-30 21 views
8

Trong Lua chỉ có string.find, nhưng đôi khi cần string.rfind. Ví dụ: để phân tích đường dẫn thư mục và tệp như:Cách triển khai string.rfind trong Lua

fullpath = "c:/abc/def/test.lua" 
pos = string.rfind(fullpath,'/') 
dir = string.sub(fullpath,pos) 

Cách viết như vậy string.rfind?

Trả lời

5

Bạn có thể sử dụng string.match:

fullpath = "c:/abc/def/test.lua" 
dir = string.match(fullpath, ".*/") 
file = string.match(fullpath, ".*/(.*)") 

đây trong mô hình, .* là tham lam, do đó nó sẽ phù hợp với nhiều như nó có thể trước khi nó phù hợp với /

CẬP NHẬT:

Như @Egor Skriptunoff chỉ ra, điều này là tốt hơn:

dir, file = fullpath:match'(.*/)(.*)' 
+1

dir, file = fullpath: '(. * /) (*).' Trận đấu –

2

Yu & Câu trả lời của Egor hoạt động. Một khả năng sử dụng find sẽ được đảo ngược chuỗi:

pos = #s - s:reverse():find("/") + 1 
+0

này cho kết quả tương tự: 'pos = s: trận đấu'. *()/'' –

Các vấn đề liên quan