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。

void get_data(string &s, int &y, int &m, int &d)

    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如何从字符串提取某一个字符的主要内容,如果未能解决你的问题,请参考以下文章

jQuery如何从字符串中提取某一数字

从Lua中的字符串中提取数字

Lua语言(stm32+2G/4G模块)和C语言(stm32+esp8266)从字符串中提取相关数据的方法-整理

Lua语言(stm32+2G/4G模块)和C语言(stm32+esp8266)从字符串中提取相关数据的方法-整理

Lua语言(stm32+2G/4G模块)和C语言(stm32+esp8266)从字符串中提取相关数据的方法-整理

Lua:如何从_G中提取函数?