📄 strlib.c
字号:
/*** strlib.c** String library to LUA**** Waldemar Celes Filho** TeCGraf - PUC-Rio** 19 May 93*/#include <stdlib.h>#include <string.h>#include <ctype.h>#include "lua.h"/*** Return the position of the first caracter of a substring into a string** LUA interface:** n = strfind (string, substring)*/static void str_find (void){ int n; char *s1, *s2; lua_Object o1 = lua_getparam (1); lua_Object o2 = lua_getparam (2); if (!lua_isstring(o1) || !lua_isstring(o2)) { lua_error ("incorrect arguments to function `strfind'"); return; } s1 = lua_getstring(o1); s2 = lua_getstring(o2); n = strstr(s1,s2) - s1 + 1; lua_pushnumber (n);}/*** Return the string length** LUA interface:** n = strlen (string)*/static void str_len (void){ lua_Object o = lua_getparam (1); if (!lua_isstring(o)) { lua_error ("incorrect arguments to function `strlen'"); return; } lua_pushnumber(strlen(lua_getstring(o)));}/*** Return the substring of a string, from start to end** LUA interface:** substring = strsub (string, start, end)*/static void str_sub (void){ int start, end; char *s; lua_Object o1 = lua_getparam (1); lua_Object o2 = lua_getparam (2); lua_Object o3 = lua_getparam (3); if (!lua_isstring(o1) || !lua_isnumber(o2) || !lua_isnumber(o3)) { lua_error ("incorrect arguments to function `strsub'"); return; } s = strdup (lua_getstring(o1)); start = lua_getnumber (o2); end = lua_getnumber (o3); if (end < start || start < 1 || end > strlen(s)) lua_pushstring (""); else { s[end] = 0; lua_pushstring (&s[start-1]); } free (s);}/*** Convert a string to lower case.** LUA interface:** lowercase = strlower (string)*/static void str_lower (void){ char *s, *c; lua_Object o = lua_getparam (1); if (!lua_isstring(o)) { lua_error ("incorrect arguments to function `strlower'"); return; } c = s = strdup(lua_getstring(o)); while (*c != 0) { *c = tolower(*c); c++; } lua_pushstring(s); free(s);} /*** Convert a string to upper case.** LUA interface:** uppercase = strupper (string)*/static void str_upper (void){ char *s, *c; lua_Object o = lua_getparam (1); if (!lua_isstring(o)) { lua_error ("incorrect arguments to function `strlower'"); return; } c = s = strdup(lua_getstring(o)); while (*c != 0) { *c = toupper(*c); c++; } lua_pushstring(s); free(s);} /*** Open string library*/void strlib_open (void){ lua_register ("strfind", str_find); lua_register ("strlen", str_len); lua_register ("strsub", str_sub); lua_register ("strlower", str_lower); lua_register ("strupper", str_upper);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -