Lua提供简易的字符串处理函数_lua strcmp-程序员宅基地

技术标签: c  string  byte  function  lua  

Lua提供简易的字符串处理函数  转载

 

字符串库为Lua提供简易的字符串处理操作,所有的字串操作都是以1为基数的(C以0),也可使用负向索引,最后一个索引为-1 ; 所有的函数都存放在string表,并且已建立元表(__index=string表)
所以string.byte(s,i) <=> s:byte(i)

1、string.byte(s [, i [, j]])
功能:返回从i到j的字符所对应的数值(字符 到 ASCII值),i默认为1,j默认为i的值
如:s="123456" s:(1,2) => 49 50

 

--------------------------------------------------------------------------------


2、string.char (···)
功能:返回ASCII值参数对应的字符串
如:string.char(49,50) => 12

 

--------------------------------------------------------------------------------


3、string.dump(function)
功能:返回指定函数的二进制代码(函数必须是一个Lua函数,并且没有上值)

 

--------------------------------------------------------------------------------


4、string.find(s, pattern [, init [, plain]])
功能:查找s中首次出现pattern的位置,如果找到则返回首次出现的起始和结束索引否则返回nil
     init:为搜索位置的起始索引,默认为1(也可以用负索引法表示)
     plain:true 将关闭样式简单匹配模式,变为无格式匹配

 

--------------------------------------------------------------------------------


5、string.format (formatstring, ···)
功能:格式化字符串formatstring参数与C差不多
其中:*, l, L, n, p, h不被支持
c, d, E, e, f, g, G, i, o, u, X, x:接受数字参数
q, s:接受字符串参数
%q:为自动将对应参数字串中的特殊字符加上/
如:string.format('%q', 'a string with "quotes" and /n new line')等于
   "a string with /"quotes/" and /
    new line"
注:此函数不能接受字符串中间带/0的字符

 

--------------------------------------------------------------------------------


6、string.gmatch(s, pattern)
功能:返回一个迭代函数,每次调用此函数,将返回下一个查找到的样式串对应的字符
如:  s = "hello world from Lua"
     for w in string.gmatch(s, "%a+") do
       print(w)
     end
为 hello
   word
   from
   Lua

字串到表的赋值
   t = {}
   s = "from=world, to=Lua"
   for k, v in string.gmatch(s, "(%w+)=(%w+)") do
      t[k] = v
   end

 

--------------------------------------------------------------------------------


7、string.gsub (s, pattern, repl [, n])
功能:返回一个经repl替换pattern的字符串及替换的次数
s:待替换的字串
pattern:查找的字串
repl:要替换的内容(可以为字串,表,函数)
当repl为字符串时:进行对应字串的替换,%0~%9 %0为全匹配 %% 为%
当repl为表时:
当repl为函数时:每次查找到字符都将

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yecao_kinux/article/details/2292658

智能推荐

鼠标光标是黑色方块,切换为竖线的方法_光标变成黑块怎么变回竖线-程序员宅基地

文章浏览阅读2.9w次,点赞39次,收藏36次。编辑时有两种模式:1、光标位置显示为竖线,即通常使用的模式,插入模式2、光标位置显示为方块,即覆盖模式。这2个可以互相切换,切换方法:1、如果目前是插入模式,点击键盘的insert键,则切换成覆盖模式,反之同样。2、笔记本电脑键盘没有insert键时可以用软键盘点击insert键进行切换(软键盘打开方式:win+R,输入osk回车),或者接一个有Insert的键盘点击 insert 就好..._光标变成黑块怎么变回竖线

生态速递丨微擎系统已支持一键部署至云托管-程序员宅基地

文章浏览阅读385次。微信云托管是微信团队和腾讯云联合提供的以云原生为基础的,免运维、高可用服务上云解决方案,无需服务器,1分钟即可部署小程序/公众号服务端。微擎是一家中小企业云端商业及营销解决方案提供商,主要从事网络技术研发及零售科技服务。现有认证开发者超30000名,服务规模超50万家。为降低用户使用门槛,方便用户更加方便快捷地上云,微擎已支持通过“云安装”功能,将代码托管至微信云托管,无需单独购买服务器和域名,即可实现一键部署,简化操作,非常适合初创、中小企业以及研发人力有限的团队。操作指引几步完成配置一、在微擎

RBF神经网络参考模型自适应MATLAB实现(分析)_rbf自适应控制-程序员宅基地

文章浏览阅读2.4w次,点赞28次,收藏209次。由于BP神经网络的收敛速度慢,不适合安在自适应系统里,所以选择了速度比较快的RBF神经网络,看了关于RBF神经网络自适应控制的一些原理和MATLAB代码,有一些自己的理解写在这里。一般的神经网络的作用是去做一些分类,回归等工作,能够根据系统输入,在训练好的神经网络系统下分类或者预测出系统的输出,我主要的工作不是做分类器,这个方法主要运用在机器视觉上,我的研究生主要工作是逼近一个未知模型,这就需要..._rbf自适应控制

iOS应用崩溃日志揭秘-程序员宅基地

文章浏览阅读1.1k次。iOS应用崩溃日志揭秘Soheil Azarpour on March 13, 2013 Tweet这篇文章还可以在这里找到 英语Learn how to make sense of crash logs!本文作者是 Soheil Moayedi Azarpour, 他是一名独立iOS开发者。作为一名应用开发者,你

error while loading shared libraries: libcudnn.so.7: cannot open shared object file: No such file or_oserror: libcudnn.so.7: cannot open shared object -程序员宅基地

文章浏览阅读5.6k次。1、错误:libcudnn.so.7.build_release/tools/caffe.build_release/tools/caffe: error while loading shared libraries: libcudnn.so.7: cannot open shared object file: No such file or directoryMakefile:542: ..._oserror: libcudnn.so.7: cannot open shared object file: no such file or dire

hadoop使用HDFS报错:ls: ‘.‘: No such file or directory_ls: `.': no such file or directory-程序员宅基地

文章浏览阅读8.9k次,点赞7次,收藏12次。安装好的Hadoop系统验证是否安装成功时使用命令:[root@localhost hadoop]#bin/hdfs dfs -lsls: '.': No such file or directory解决方法:hdfs dfs -ls 命令的完整语法是:hdfs dfs -ls [path]默认情况下当你未指定[path] 时,hadoop会在HDFS里面将路径扩展为/home/[username];这样的话[username]就会被执行命令的Linux用户名替代。因此,当执行此命令时,hdfs_ls: `.': no such file or directory

随便推点

点云分割--RANSAC圆柱体分割_ransac的圆柱分割算法-程序员宅基地

文章浏览阅读1.3k次。1.版本要求版本: >PCL1.32.简介有时我们想分割出点云中的圆柱体,比如汽车的轮子。ransac圆柱体分割是分割点云中圆柱体的方法之一,但目前通过本人实验发现ransac分割圆柱体并不可靠,算法鲁棒性很低,不像平面分割那样稳定可靠,因此建议大家在项目中不要使用此算法,如果实在想用,还请多测试检查算法可靠性。3.数据本例中使用的点云数据(test.pcd)请见百度网盘分享。链接:https://pan.baidu.com/s/1-8jo148CSqBXO53hCrTCJw提取码:kw_ransac的圆柱分割算法

centos8安装doctor_centos 8 如何安装docter-程序员宅基地

文章浏览阅读408次。学习的过程中正好整理了一下 docker 的基本命令卸载旧版本的dockeryum -y remove docker docker-common docker-selinux docker-engine安装依赖yum install yum-utils device-mapper-persistent-data lvm2 -y设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker..._centos 8 如何安装docter

关于编译报错 error: cannot convert 'const std::__cxx11::basic_string<char>' to 'const char*' 的处理-程序员宅基地

文章浏览阅读5.2w次,点赞7次,收藏23次。关于编译报错 error: cannot convert ‘const std::__cxx11::basic_string’ to ‘const char*’ 的处理所以然目前c++11标准开始普及,大家都开始默认支持或者使用c++11,例如GCC 5就开始默认启用C++11特性。但是由于c++11相对于c++03,很多实现的数据结构都发生了改变,所以两者并不能完全混用。 默认情况下,GCC 5_error: cannot convert

pkg_resources.DistributionNotFound: The 'pytz' distribution was not found and is required by Django_pkg_resources.distributionnotfound: the 'thop' dis-程序员宅基地

文章浏览阅读7.2k次。pkg_resources.DistributionNotFound: The 'pytz' distribution was not found and is required by Django刚刚安装完Django,创建项目失败。报错重新安装python的distribution:下载 distribution : https://pypi.python.org/pypi/distribut..._pkg_resources.distributionnotfound: the 'thop' distribution was not found an

VSCode开发C、C++环境搭建系列(一)——基于Mingw-w64搭建_vscode mingw64-程序员宅基地

文章浏览阅读9.2k次,点赞18次,收藏65次。前言:本次系列文章详细说明基于VS Code来搭建C、C++的开发环境,本次的操作系统是Windows系统,在Windows上面,会有两种不同主流编译器,及Mingw-W64和MSVC,本文介绍第一种,是系列文章的第一篇。概念辨析:Mingw-w64。是 GCC 的 Windows 版本 ;Cygwin。是一个在windows平台上运行的类UNIX模拟环境,在Windows上面提..._vscode mingw64

linux下编写.sh文件,用于执行傻瓜命令_sudo vi test.sh是新文件-程序员宅基地

文章浏览阅读1.5w次,点赞3次,收藏4次。1, vi test.sh #编辑test.sh文件2,chmod a+x test.sh #给test.sh可执行权限3,编写脚本文件!/bin/bashecho ¨================start repo sync===============¨ repo sync -f -j10 while [ $? == 1 ]; do echo ¨================syn_sudo vi test.sh是新文件

推荐文章

热门文章

相关标签