当前位置: 首页 > 编程笔记 >

Lua中字符串(string)浅析

宓昂雄
2023-03-14
本文向大家介绍Lua中字符串(string)浅析,包括了Lua中字符串(string)浅析的使用技巧和注意事项,需要的朋友参考一下

Lua中字符串可以使用""或''声明,类似Javascript中的用法。


> ="sdfdsf"

sdfdsf

> ='sfdd'

sfdd

> ='abc"'

abc"

> ="abc'"

abc'

同Java、Python一样,Lua的字符串是不可修改的值,可以通过string.gsub函数来替换字符串中的子串:


> s = string.gsub('abc def', 'def', 'efg')

> =s

abc efg

 

另外,Lua的字符串和其他Lua对象(如table和函数等)一样,都是自动内存管理机制所管理的对象。Lua能够高效的处理长字符串,操作100K或者1M的字符串是常见的。

另外同Python一样,可以轻松使用块字符串:


page = [[

<html>

<h1>hello world</h1>

</html>

]]

Lua提供了运行时的数字与字符串的自动转换:


> ='10' + 1

11

> ='hello' + 1

stdin:1: attempt to perform arithmetic on a string value

stack traceback:

stdin:1: in main chunk

[C]: in ?

> ='10'*'2'

20

Lua不仅会在算术操作中执行这种强制转换,还会在其他任何需要数字的地方这么做。相反,如果Lua期望一个字符串,而得到一个数字时,会将数字转换为字符串。


> =10 .. 20

1020

在lua中..是字符串连接操作符;

但是不要依赖这种类型转换,10 == "10"为false,因为类型不同。

如果想把一个字符串转换为数字,可以使用tonumber,如果不能转换,返回nil;反过来,可以使用tostring将数字转换为字符串。

有趣的是:tostring(10) == "10", 10 .. "" == "10";
 
另外在Lua5.1中,可以使用#来获取字符串的长度


> =#"3223"

4

> a = "3224"

> =#a

4


另外需要注意的是,\0在Lua中含义不同于其他语言如C.

> ='abc\0abc'

abcabc

> =#'abc\0abc'

7

 类似资料:
  • 主要内容:实例,字符串操作,实例,实例,实例,实例,实例,实例,实例,实例字符串或串(String)是由数字、字母、下划线组成的一串字符。 Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符。 双引号间的一串字符。 [[ 与 ]] 间的一串字符。 以上三种方式的字符串实例如下: 实例 string1 = "Lua" print ( "\"字符串 1 是\"" ,string1 ) string2 = 'xnip.cn' print ( "字符串 2 是

  • 字符串或串(String)是由数字、字母、下划线组成的一串字符。 Lua 语言中字符串可以使用以下三种方式来表示: 单引号间的一串字符。 双引号间的一串字符。 [[和]]间的一串字符。 以上三种方式的字符串实例如下: string1 = "Lua" print("\"字符串 1 是\"",string1) string2 = 'runoob.com' print("字符串 2 是",string

  • 本文向大家介绍Lua字符串库(string库)学习笔记,包括了Lua字符串库(string库)学习笔记的使用技巧和注意事项,需要的朋友参考一下 Lua 最强大的特性之一就是它的字符串处理能力,它支持字符格式化输出,具有可扩展的模式匹配查找功能,以及一些实用的字符操作,例如查询、截取、替换和删除等字符串操作,这些字符串操作函数都封装在一个名为 string 的模块里。 Lua 里的字符索引是从 1

  • 本文向大家介绍Lua中的string库(字符串函数库)总结,包括了Lua中的string库(字符串函数库)总结的使用技巧和注意事项,需要的朋友参考一下 Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。 字符串库中的一些函数是非常简单的: string.len(s)     

  • 问题内容: 我有类似的字符串,我需要将它们按字符分开,然后将两个部分分别分配给一个变量。在Ruby中,我会这样做: 显然,Lua没有这么简单的方法。经过一番挖掘,我找不到一种简短的方法来实现自己的目标。我提到我是Lua的一个新手,我需要在Redis的脚本中使用它(因此,它确实应该很小,如果可能的话,只写一个)。 问题答案: 使用模式匹配: 请注意,这是一个魔术字符,因此必须使用进行转义。

  • 主要内容:实例,实例,实例,转义字符,字符编码,字符串内建方法,实例,字符串 unpack 指令Ruby 中的 String 对象用于存储或操作一个或多个字节的序列。 Ruby 字符串分为单引号字符串(')和双引号字符串("),区别在于双引号字符串能够支持更多的转义字符。 单引号字符串 最简单的字符串是单引号字符串,即在单引号内存放字符串: '这是一个 Ruby 程序的字符串' 如果您需要在单引号字符串内使用单引号字符,那么需要在单引号字符串使用反斜杠(\),这样 Ruby 解释器就不会认为

  • 主要内容:认识Redis字符串,Redis字符串命令,简单命令演示string(字符串)是 Redis 中最简单的数据类型。我们知道,Redis 所有数据类型都是以 key 作为键,通过检索这个 key 就可以获取相应的 value 值。Redis 存在多种数据类型,比如字符串、列表、哈希散列等,它们对应的 value 结构各不相同。本节先讲解字符串的相关知识。 认识Redis字符串 Redis 使用标准 C 语言编写,但在存储字符时,Redis 并未使用 C

  • Python转义字符 转义字符 描述 (在行尾时) 续行符 \ 反斜杠符号 \' 单引号 \" 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 \n 换行 \v 纵向制表符 \t 横向制表符 \r 回车 \f 换页 \oyy 八进制数,yy代表的字符,例如:\o12代表换行 \xyy 十六进制数,yy代表的字符,例如:\x0a代表换行 \other 其它的字符以普通