String(字符串)

简介: String(字符串)

字符串用于表示文本Lua 语言中的字符串既可以表示单个字符,也可以表示一整本书籍。在 Lua 语言中,操作 100K 或者 1M 个字母组成的字符串的程序也很常见。


Lua 语言中的字符串是一串字节组成的序列, Lua 核心并不关心这些字节究竟以何种方式编码文本。在 Lua 语言中,字符使用 8 个比特位来存储( eight-bit clean )。 Lua 语言中的字符串可以存储包括空字符在内的所有数值代码,这意味着我们可以在字符串中存储任意的二进制数据。同样,我们可以使用任意一种编码方式( UTF-8UTF-16 等)来存储 Unicode 字符串。不过,最好在一切可能的情况下优先使用 UTF-8 编码。 Lua 的字符串标准库默认处理 8 个比特位( 1Byte )的字符,但是也同样可以非常优雅的处理 UTF-8 字符串。此外, Lua5.3 开始提供了一个帮助使用 UTF-8 编码的函数库。


Lua 语言中的字符串是不可变值immutable value )。我们不能像 C 语言中那样直接改变某个字符串中的某个字符,但是我们可以通过创建一个新字符串的方式来达到修改的目的,例如:

a = "one string"
b = string.gsub(a, "one", "another")  --改变字符串中的某些部分
print(a)    --> one string
print(b)    --> another string


Lua 语言中的其他对象(表、函数等)一样, Lua 语言中的字符串也是自动内存管理的对象之一。这意味着 Lua 语言会负责字符串的分配和释放,开发人员无需关注。

可以使用长度操作符(length operator) # 获取字符串的长度。

a = "hello"
print(#a)             --> 5
print(#"good bye")    --> 8


该操作符返回字符串占用的字节数


提示

在某些编码中,字符串占用的字节数可能与字符串中字符的个数不同。


我们可以使用连接操作符 .. (两个点)来进行字符串连接。如果操作数中存在数值,那么 Lua 语言会先把数值转换为字符串

> "Hello " .. "World"       --> Hello World
> "result is " .. 3         --> result is 3


在某些语言中,字符串连接使用的是加号,但实际上 3+53..5 是不一样的。


注意

Lua 语言中,字符串是不可变量。字符串连接总是创建一个新字符串,而不会改变原来作为操作数的字符串。

> a = "Hello"
> a .. " World"     --> Hello World
> a                 --> Hello
目录
相关文章
|
2月前
|
存储 缓存 测试技术
CMake String函数:如何巧妙地在cmake中操作字符串
CMake String函数:如何巧妙地在cmake中操作字符串
146 0
|
4月前
|
存储 编译器 Linux
【字符串探秘:手工雕刻的String类模拟实现大揭秘】(下)
【字符串探秘:手工雕刻的String类模拟实现大揭秘】
|
3月前
|
存储 XML 缓存
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
Java字符串内幕:String、StringBuffer和StringBuilder的奥秘
26 0
|
4月前
|
C++
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)
56 0
|
10天前
string(字符串)
在 Lua 中,字符串可以用双引号或单引号定义,如 `string1 = "this is string1"` 和 `string2 = 'this is string2'`。多行字符串可由两个方括号包围,例如 `html` 变量所示,它包含了一个 HTML 片段。Lua 会尝试将数字字符串转换为数值进行算术运算,但混合字符串和数字可能导致错误,如 `"error" + 1`。
|
4月前
|
C++ 索引
c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)
c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)
44 0
|
15天前
|
缓存 安全 Java
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
9 0
|
存储 编译器 Linux
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
标准库中的string类(中)+仅仅反转字母+字符串中的第一个唯一字符+字符串相加——“C++”“Leetcode每日一题”
|
1月前
|
JavaScript
js 字符串String转对象Object
该代码示例展示了如何将一个以逗号分隔的字符串(`'1.2,2,3,4,5'`)转换为对象数组。通过使用`split(',')`分割字符串并`map(parseFloat)`处理每个元素,将字符串转换成浮点数数组,最终得到一个对象数组,其类型为`object`。
|
1月前
|
Python
Python中的字符串(String)
【4月更文挑战第6天】Python字符串是不可变的文本数据类型,可使用单引号或双引号创建。支持连接(+)、复制(*)、长度(len())、查找(find()、index()、in)、替换(replace())、分割(split())、大小写转换(lower()、upper())和去除空白(strip()等)操作。字符串可格式化,通过%操作符、`str.format()`或f-string(Python 3.6+)。字符串以Unicode编码,作为对象拥有属性和方法。熟悉这些操作对处理文本数据至关重要。
39 6
Python中的字符串(String)