lua如何从字符串提取某一个字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lua如何从字符串提取某一个字符相关的知识,希望对你有一定的参考价值。
参考技术A lua里不像c一样区分字符串和字符。比如:
b
=
a:match("gig.-gvt")
--提取包含头尾的字符串
print(b:sub(4,
string.len(b)-3))
--去除头尾
总的来说通过string.match或者string.sub来提取字符串,结合patterns(弱化版的正则表达式)进行通配;具体得视源字符串的数据特征而定。
function
string.split(input,
delimiter)
input
=
tostring(input)
delimiter
=
tostring(delimiter)
if
(delimiter=='')
then
return
false
end
local
pos,arr
=
0,
--
for
each
divider
found
for
st,sp
in
function()
return
string.find(input,
delimiter,
pos,
true)
end
do
table.insert(arr,
string.sub(input,
pos,
st
-
1))
pos
=
sp
+
1
end
table.insert(arr,
string.sub(input,
pos))
return
arr
end
扩展资料:
Lua还具有其它一些特性:同时支持面向过程(procedure-oriented)编程和函数式编程(functional
programming);自动内存管理;只提供了一种通用类型的表(table),用它可以实现数组,哈希表,集合,对象;语言内置模式匹配;
闭包(closure);函数也可以看做一个值;提供多线程(协同进程,并非操作系统所支持的线程)支持;通过闭包和table可以很方便地支持面向对象编程所需要的一些关键机制,比如数据抽象,虚函数,继承和重载等。
参考资料来源:百度百科-lua
c++中如何从字符串2015-6-8取出年月日
c++中如何从字符串2015-6-8取出年月日
在C++中字符串有两种,不过提取方式类似,具体如下:
一、以\'\\0\'结束的字符数组。
对于以\'\\0\'结束的字符数组,可以有如下两种方式:
1、通过自定义函数提取。
由于格式固定,所以可以通过计算提取。
void get_data(char *s, int &y, int &m, int &d)int i=0;
y=0;
while(s[i]!= \'-\')//循环提取出年。
y=y*10+s[i]-\'0\';
i++;
i++;//忽略\'-\'.
m=0;
while(s[i]!=\'-\')//循环提取出月。
m=m*10+s[i]-\'0\';
i++;
i++;//忽略\'-\'
d=0;
while(s[i]!=\'\\0\')//循环提取出日。
d=d*10+s[i]-\'0\';
i++;
2、利用sscanf自动完成。
sscanf可以从字符串中格式化提取数据。
代码如下:
void get_data(char *s, int &y, int &m, int &d)sscanf(s,"%d-%d-%d",&y,&m,&d);//这样一句就可以了。
二、string类字符串。
与字符数组类似,string类字符串也可以用类似方式实现。
1、通过自定义函数:
void get_data(string &s, int &y, int &m, int &d)int i=0;
y=0;
while(s[i]!= \'-\')//循环提取出年。
y=y*10+s[i]-\'0\';
i++;
i++;//忽略\'-\'.
m=0;
while(s[i]!=\'-\')//循环提取出月。
m=m*10+s[i]-\'0\';
i++;
i++;//忽略\'-\'
d=0;
while(i<s.length())//循环提取出日。
d=d*10+s[i]-\'0\';
i++;
2、string类可以转为字符数组形式,所以一样可以用sscanf。
sscanf(s.c_str(),"%d-%d-%d",&y,&m,&d);//s.c_str()可以将string类转为字符数组形式,以\'\\0\'结尾。 所以可以类似操作。
参考技术A
字符串变量string可以当成字符数组一样用
string a = "2015-06-08";int year,month,day;
year = a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3];
month = a[5] * 10 + a[6];
day = a[8] * 10 + a[9];
以上是关于lua如何从字符串提取某一个字符的主要内容,如果未能解决你的问题,请参考以下文章
Lua语言(stm32+2G/4G模块)和C语言(stm32+esp8266)从字符串中提取相关数据的方法-整理
Lua语言(stm32+2G/4G模块)和C语言(stm32+esp8266)从字符串中提取相关数据的方法-整理