Cách nhanh nhất là sử dụng trim.so biên soạn từ trim.c:
/* trim.c - based on http://lua-users.org/lists/lua-l/2009-12/msg00951.html
from Sean Conner */
#include <stddef.h>
#include <ctype.h>
#include <lua.h>
#include <lauxlib.h>
int trim(lua_State *L)
{
const char *front;
const char *end;
size_t size;
front = luaL_checklstring(L,1,&size);
end = &front[size - 1];
for (; size && isspace(*front) ; size-- , front++)
;
for (; size && isspace(*end) ; size-- , end--)
;
lua_pushlstring(L,front,(size_t)(end - front) + 1);
return 1;
}
int luaopen_trim(lua_State *L)
{
lua_register(L,"trim",trim);
return 0;
}
biên dịch một cái gì đó như:
gcc -shared -fpic -O -I/usr/local/include/luajit-2.1 trim.c -o trim.so
chi tiết hơn (với so với các phương pháp khác): http://lua-users.org/wiki/StringTrim
Cách sử dụng:
local trim15 = require("trim")--at begin of the file
local tr = trim(" a z z z z z ")--anywhere at code
Bạn thực sự không cần sử dụng dấu +, nó sẽ không khớp với không gian nếu bạn chỉ sử dụng% s. Sử dụng% s có vẻ phổ biến hơn - mặc dù tôi đoán kết quả cuối cùng cũng giống nhau. – sylvanaar
Kết quả cuối cùng sẽ giống nhau, nhưng với '+' bạn sẽ thay thế khoảng trống theo nhau trong một lần có thể có hiệu suất cao hơn (không thực sự chắc chắn nếu nó thực sự quan trọng trong Lua). – Mario
Không phải tôi. Chỉ đáng nói đến. – sylvanaar