Il modo più veloce è quello di utilizzare trim.so compilato da 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;
}
compilare qualcosa di simile:
gcc -shared -fpic -O -I/usr/local/include/luajit-2.1 trim.c -o trim.so
più dettagliate (con rispetto agli altri metodi): http://lua-users.org/wiki/StringTrim
Utilizzo:
local trim15 = require("trim")--at begin of the file
local tr = trim(" a z z z z z ")--anywhere at code
Non hai davvero bisogno di usare +, non corrisponderà a non spazio se usi solo% s. L'uso di% s sembra più comune, anche se suppongo che il risultato finale sia lo stesso. – sylvanaar
Il risultato finale sarà lo stesso, ma con '+' sostituirai gli spazi l'uno dopo l'altro in una volta, il che potrebbe essere più performante (non sono sicuro che sia davvero importante in Lua). – Mario
Nemmeno io. Merita solo una menzione. – sylvanaar