Lua中的string库(字符串函数库)总结

LUA 将16进制数 与 IEEE - 754 浮点数 互转 一,说明: 1,传递参数需要是16进制格式的字符串,或者数字(不支持负数) 2,只支持32位,单精度 3,提供一个验证使用的网址https://www.h-schmidt.net/FloatConverter/IEEE754.html 4,Hex转浮点数 代码如下: --备注:math.modf() 这个函数就是为了获取除法的整数部分 function hexToFloat( hexS... 阅读详情

Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。

字符串库中的一些函数是非常简单的:

string.len(s)          返回字符串s的长度;
string.rep(s, n)      返回重复n次字符串s的串;你使用string.rep("a", 2^20)可以创建一个1M bytes的字符串(比如,为了测试需要);
string.lower(s)       将s中的大写字母转换成小写(string.upper将小写转换成大写)。如果你想不关心大小写对一个数组进行排序的话,你可以这样:

table.sort(a, function (a, b) return string.lower(a) < string.lower(b) end)

string.upper(s)       将s中的小写字母转换成大写
string.upper和string.lower都依赖于本地环境变量。所以,如果你在 European Latin-1环境下,表达式:
string.upper("a??o")    --> "A??O"


string.sub(s,i,j)      函数截取字符串s的从第i个字符到第j个字符之间的串。Lua中,字符串的第一个字符索引从1开始。你也可以使用负索引,负索引从字符串的结尾向前计数:-1指向最后一个字符,-2指向倒数第二个,以此类推。所以, string.sub(s, 1, j)返回字符串s的长度为j的前缀;string.sub(s, j, -1)返回从第j个字符开始的后缀。如果不提供第3个参数,默认为-1,因此我们将最后一个调用写为string.sub(s, j);string.sub(s, 2, -2)返回去除第一个和最后一个字符后的子串。

s = "[in brackets]"
print(string.sub(s, 2, -2)) --> in brackets


记住:Lua中的字符串是恒定不变的。string.sub函数以及Lua中其他的字符串操作函数都不会改变字符串的值,而是返回一个新的字符串。一个常见的错误是:

string.sub(s, 2, -2)

认为上面的这个函数会改变字符串s的值。如果你想修改一个字符串变量的值,你必须将变量赋给一个新的字符串:

s = string.sub(s, 2, -2)

string.char函数和string.byte函数用来将字符在字符和数字之间转换。string.char获取0个或多个整数,将每一个数字转换成字符,然后返回一个所有这些字符连接起来的字符串。string.byte(s, i)将字符串s的第i个字符的转换成整数;第二个参数是可选的,缺省情况下i=1。下面的例子中,我们假定字符用ASCII表示:

print(string.char(97)) --> a
i = 99; print(string.char(i, i+1, i+2)) --> cde
print(string.byte("abc")) --> 97
print(string.byte("abc", 2)) --> 98
print(string.byte("abc", -1)) --> 99 

上面最后一行,我们使用负数索引访问字符串的最后一个字符。

Lua提供了string.format()函数来生成具有特定格式的字符串, 函数的第一个参数是格式(formatstring), 之后是对应格式中每个代号的各种数据. 由于格式字符串的存在, 使得产生的长字符串可读性大大提高了. 这个函数的格式很像C语言中的printf().函数string.format在用来对字符串进行格式化的时候,特别是字符串输出,是功能强大的工具。这个函数有两个参数,你完全可以照C语言的printf来使用这个函数。第一个参数为格式化串:由指示符和控制格式的字符组成。指示符后的控制格式的字符可以为:十进制'd';十六进制'x';八进制'o';浮点数'f';字符串's'。在指示符'%'和控制格式字符之间还可以有其他的选项:用来控制更详细的格式,比如一个浮点数的小数的位数:

格式字符串可能包含以下的转义码:

%c - 接受一个数字, 并将其转化为ASCII码表中对应的字符
%d, %i - 接受一个数字并将其转化为有符号的整数格式
%o - 接受一个数字并将其转化为八进制数格式
%u - 接受一个数字并将其转化为无符号整数格式
%x - 接受一个数字并将其转化为十六进制数格式, 使用小写字母
%X - 接受一个数字并将其转化为十六进制数格式, 使用大写字母
%e - 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
%E - 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
%f - 接受一个数字并将其转化为浮点数格式
%g(%G) - 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式
%q - 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
%s - 接受一个字符串并按照给定的参数格式化该字符串


为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:

(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4) 宽度数值
(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.

在这些参数的后面则是上述所列的转义码类型(c, d, i, f, ...).

print(string.format("pi = %.4f", PI))
      --> pi = 3.1416
d = 5; m = 11; y = 1990
print(string.format("%02d/%02d/%04d", d, m, y))
        --> 05/11/1990
tag, title = "h1", "a title"
print(string.format("<%s>%s</%s>", tag, title, tag))
        --> <h1>a title</h1>

第一个例子,%.4f代表小数点后面有4位小数的浮点数。第二个例子%02d代表以固定的两位显示十进制数,不足的前面补0。而%2d前面没有指定0,不足两位时会以空白补足。对于格式串部分指示符得详细描述清参考lua手册,或者参考C手册,因为Lua调用标准C的printf函数来实现最终的功能。

以下是一些例子:

string.format("%%c: %c", 83)            输出S
string.format("%+d", 17.0)              输出+17
string.format("%05d", 17)               输出00017
string.format("%o", 17)                 输出21
string.format("%u", 3.14)               输出3
string.format("%x", 13)                 输出d
string.format("%X", 13)                 输出D
string.format("%e", 1000)               输出1.000000e+03
string.format("%E", 1000)               输出1.000000E+03
string.format("%6.3f", 13)              输出13.000
string.format("%q", "One\nTwo")         输出"One\
                                          Two"
string.format("%s", "monkey")           输出monkey
string.format("%10s", "monkey")         输出    monkey
string.format("%5.3s", "monkey")        输出  mon

原文地址:http://www.jb51.net/article/57613.htm

Lua string(字符串)库方法以及必要的例子 Lua字符串处理API+例子 前言 string库提供了字符串处理的通用函数。 例如字符串查找、子串、模式匹配等。 当在Lua中对字符串做索引时,第一个字符从 1 开始计算(而不是 C 里的 0 )。 索引可以是负数,它指从字符串末尾反向解析。 即,最后一个字符在 -1 位置处,等等。 字符串库中的所有函数都在表 string 中。 它还将其设置为字符串元表的 __index 域。 因此,你可以以... 阅读详情

相关推荐

LUA string库详解

1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,... 2. string库中所有的function都不会直接操作字符串,而是返回一个结果   string.byte(string [,pos]):返回第pos个字符的整数表示形式.如a为97. string.char(i1,i2...):i1,i2为整型,将i1,i2..等转化为对应的字符然后连接成字符

TTc 's share 1048

lua字符串处理(string库用法)

原文地址http://www.daileinote.com/computer/lua/02 lua的string库是用来处理字符串的,基础函数如下 string.byte(s [, i [, j]]) string.byte是用来把字符转换成ascii数字,s为目标字符串,i为索引开始位置(从1开始),j为索引结束位置 string.char(...) string.char是把as...

戴磊的博客 7万+

三极管NPN与PNP的工作原理及快速识别技巧

本文深入浅出地解析了三极管NPN与PNP的核心工作原理。通过“水龙头”比喻,阐明其以小电流控制大电流的放大与开关本质。文章重点对比了NPN与PNP在电流方向、电位关系和控制逻辑上的根本区别,并提供了快速识别技巧与实用的选型、应用指南,帮助电子爱好者与工程师快速掌握这两种基础元件的关键知识。

neovim7hacker的博客 454

字符串加密

string.char(arg) 和 string.byte(arg[,int])string.char(arg) 和 string.byte(arg[,int])char 将整型数字转成字符并连接, byte转换字符为整数值(可以指定某个字符,默认第一个字符)。

qq_15117535的博客 654

异步FIFO的隐形陷阱:复位信号同步化实战解析

本文深入解析异步FIFO设计中复位信号同步化的隐形陷阱,重点分析赛灵思xpm_fifo_async原语在FPGA应用中的常见问题。通过实战代码和系统集成方案,提供复位同步化的最佳实践,帮助工程师避免跨时钟域通信故障,提升系统可靠性。

keras9composer的博客 245

别再死记公式了!用HFSS/CST手把手教你仿真一个2.4GHz WiFi的PIFA天线(附参数调试技巧)

本文详细介绍了使用HFSS和CST仿真软件设计2.4GHz WiFi PIFA天线的全流程,包括建模准备、分步操作指南和参数调试技巧。通过可视化结果和实战案例,帮助工程师快速掌握天线设计的关键参数优化方法,提升辐射性能和工作效率。

weixin_31682031的博客 336

lua 中string.char字节流的处理

在lua中,如果是使用http来请求的是字节流的数据 那么在cocos2dx v3.3中 需要使用xmlhttprequest这个类 在处理获取的字节流数据时,首先需要转化字节流为字符串,转换的方法是:string.char    local response = xhr.response         -- 获得返回数据 for i = 1,size do

kkk0526的专栏 2万+

增量编码器资讯大全

增量编码器是什么 增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小,按照工作原理编码器可分为增量式和绝对式两类。 增量式编码器是将位移转换成周期性的电信号,再把这个电信号转变成计数脉冲,用脉冲的个数表示位移的大小。 编码器是把角位移或直线位移转换成电信号的一种装置。前者称为码盘,后者称码尺.按照读出方式编码器可以分为接触式和非接触式两种.接触式采...

kindele的博客 6009

Lua中string库以及应用

Lua中string库以及应用 一、不需要模式匹配的函数 1. string.byte() —— 字符转换为编码(ASCII码) 原型:string.byte (s [, i [, j] ]) 函数返回字符s[i], s[i+1], ···, s[j]的内部数字编码(ASCII码),其中参数i的默认值是1,而参数j的默认值是i local str = "012abcd" print("\n常规1~4的编码(012a):") print(string.byte(str,1,4)) -- 字符串处理库的所有

weixin_43284350的博客 2101

别再瞎选了!手把手教你根据车型等级,在CarSim里快速匹配最合适的动力学模型

本文详细介绍了如何在CarSim中根据车型等级快速匹配最合适的动力学模型,提升仿真效率。通过分析CarSim模型库与A/B/C/D级车标准的对应关系,提供四步精准定位方法和不同车型的特殊处理技巧,帮助工程师避免常见错误,显著缩短模型准备时间。

weixin_27015733的博客 264

CentOS7 安装天气分型软件cost733过程详解

cost733是一款天气分型软件,其内置的一些算法可以帮助气象工作者进行天气类型划分等(我也是初学者,仅仅知道一些皮毛),但是网上找到的安装办法比较少,并且总会出现一些报错,试了一晚上,终于将安装办法调通了,希望可以帮助到大家

weixin_62573024的博客 3562

Lua 中的string库(字符串函数库)总结

(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20 我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库的操作方法,着重讲解了string.format方法,需要的朋友可以参考下 Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取...

306

数学建模学习(5):最全概率分析之图表绘制详解,内容比较多,建议收藏

(1) 绘制正整数频率使用 tabulate(X) (2)

全栈川川 4593

C语言如何把字符串传到lua,Lua中的string库(字符串函数库)总结

Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。字符串库中的一些函数是非常简单的:string.len(s) 返回字符串s的长度;string.rep(s, n) 返回重复n次字符串s的串;你使用string.rep("a", 2^20)可以创建一个1...

weixin_30459905的博客 329

Imagenet数据集1000类别中英文

英文 {0: 'tench, Tinca tinca', 1: 'goldfish, Carassius auratus', 2: 'great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias', 3: 'tiger shark, Galeocerdo cuvieri', 4: 'hammerhead, hammerhead shark', 5: 'electric ray, cram.

识物专栏 1800

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Lua中的string库(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20 我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总

Lua中的string库(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20 我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库的操作方法,着重讲解了string.format方法,需要的朋友可以参考下 Lua解释器对字符串的支持很有限。一个程序可以创建字符串

boshuzhang的专栏 374

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Golua标准库详解:从基础到高级的完整使用教程

Golua是一个用Go语言实现的Lua 5.3引擎,它提供了丰富的标准库,为开发者提供了从基础到高级的完整功能支持。本文将详细介绍Golua标准库的各个模块,帮助新手和普通用户快速掌握其使用方法。 ## 一、Golua标准库概述 Golua标准库包含多个功能模块,通过`std.Open`函数将所有标准库加载到Lua状态中。这些模块涵盖了从基础数据类型操作到高级系统功能的各个方面,为Lua脚本提

gitblog_01152的博客 1185

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

LUA string库

string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,...string库中所有的function都不会直接操作字符串,而是返回一个结果

小枫的专栏 3211

Lua之string

本文章会慢慢补充整理 文章参考: Lua的string和string库总结:https://www.cnblogs.com/zrtqsk/p/4372889.html lua官方string文档:http://www.lua.org/manual/5.3/manual.html#6.4 Lua的string和string库总结   Lua有7种数据类型,分别是nil、boolean、number、string、table、function、userdata。这里我总结一下Lua的string类型.

qq_22530263的博客 6656

lua string库 字符串 用法详解

注:string库中所有的函数都不会直接修改原字符串,只返回新结果。 加[,]的参数指缺省,即可有可无, string.len (s) 接收一个字符串,返回其长度。 空串 “” 的长度为 0 。 内嵌零也统计在内 string.len("abc") -- 返回:3 string.len("a\000bc\000") -- 返回:5 以上只支持英文,utf8 中

u014072742的博客 5566

Lua String以及String库总结

最近一直使用到string,因此干脆对lua字符串的用法进行系统性的梳理。

LuckyMechanic的博客 1807

Lua脚本教程

Lua脚本教程一、数据类型1、常量、变量2、变量名:字母、数字、下划线(不能以数字开头)3、几种数据类型二、运算符三、初识函数 一、数据类型 1、常量、变量 a=10 a=2.5 a=“abcd” 左边是变量、右边是常量 lua中注释符是 – 2、变量名:字母、数字、下划线(不能以数字开头) 内置关键字: and break do else elseif if or end in false ture function not local while repeat nil then r

qq_40506747的博客 4万+

Lua 5.1 String 库完整版(待续。。。)

很多人都写过String库,但是没有看到完整的,也许没有找到吧。因为最近要常用,自己整理一篇。 包含函数一共14个,5.1就只有这么几个 : sub(s, i, j)                                          --截取字符串s的从第i个字符到第j个字符之间的串 gsub(s, pattern, repl, n)

X805433354的专栏 4793

Lua的string和string库总结

  Lua有7种数据类型,分别是nil、boolean、number、string、table、function、userdata。这里我总结一下Lua的string类型和string库,复习一下,以便加深记忆。 个人认为string是Lua编程使用数据结构的时候,重要性仅次于table的类型。十分重要! 一、string基础。   Lua并没有字符类型,Lua的string类型表示字符序列...

weixin_33692284的博客 283
上一篇: LUA string库详解
下一篇: Lua中的metatable详解
cbbbc
博客等级 码龄15年 609粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值