lua 字符串

字符串处理

Lua 提供了字符串处理函数,可以方便地处理字符串。

使用一对匹配的单引号.例:‘hello’.

使用一对匹配的双引号.例:“abclua”.

字符串还可以用一种长括号(即[[ ]]) 括起来的方式定义.

字符串长度

string.len 函数用于获取字符串的长度。

print(string.len("Hello, world!")) -- 13

字符串拼接

string.concat 函数用于拼接字符串。

print(string.concat("Hello", ", ", "world!")) -- Hello, world!
print(11 ..22); --空格
local num = 11
local num2 = 22
print(num..num2)
print(11 .."abc") --空格
print(num.."abc")
local str = "china"
local str2 = "nzhsoft"
print("china".."nzhsoft")
print(str.."nzhsoft")
print(str..str2)`

print(11+"33") -- 44.0
print(11+"abc33") -- error



print(tonumber("11") + 10) -- 21
print(tostring(10) .. "111") -- "10111"
local prefix = "image"
local postfix = ".jpg"
local filename
for i=0,10 do
filename = prefix..i..postfix
print(filename)
end



image0.jpg
image1.jpg
image2.jpg
image3.jpg
image4.jpg
image5.jpg
image6.jpg
image7.jpg
image8.jpg
image9.jpg
image10.jpg

string 库提供了字符串处理的通用函数。

字符串查找、子串、模式匹配等。 当在
Lua 中对字符串做索引时,第一个字符从 1 开始计算(而不是 C 里的 0 )。 索引可以
是负数,它指从字符串末尾反向解析。 即,最后一个字符在 -1 位置处

字符串长度

string.len 函数用于获取字符串的长度。

print(string.len("Hello, world!")) -- 13

字符串查找

string.find 函数用于查找子串。

-- 查找子串 "world" 在字符串 "Hello, world!" 中的位置
print(string.find("Hello, world!", "world")) -- 8       12

字符串替换

string.gsub 函数用于替换字符串中的子串。

-- 替换字符串 "world" 为 "Lua"
print(string.gsub("Hello, world!", "world", "Lua")) -- Hello, Lua!

字符串分割

string.gsplit 函数用于分割字符串。

s = "Hello, world!" 
print(string.sub(s, 1, 5)) 
print(string.sub(s, 7, 12)) 
print(string.sub(s, 13, 18))    

for word in string.gmatch(s, "%a+") do  -- 匹配所有单词
    print(word)  -- 输出单词
end 
%a 代表所有字母 a-zA-Z %A
+ 重复前一项 1 次或多次,尽可能多 ax+ 匹配 ax axxx %+

字符串转换

string.upper 函数用于转换字符串为大写。

-- 转换字符串 "hello" 为大写
print(string.upper("hello")) -- HELLO

string.lower 函数用于转换字符串为小写。

-- 转换字符串 "HELLO" 为小写
print(string.lower("HELLO")) -- hello

string.reverse 函数用于反转字符串。

-- 反转字符串 "Hello, world!"
print(string.reverse("Hello, world!")) -- !dlrow ,olleH

字符串重复

string.rep 函数用于重复字符串。

-- 重复字符串 "hello" 3 次
print(string.rep("hello", 3)) -- hellohellohello

格式化字符串

string.format 函数用于格式化字符串。

-- 格式化字符串 "Hello, %s!"
print(string.format("Hello, %s!", "world")) -- Hello, world!


s4 = "Lua"
s5 = "nzhsoft"
print(string.format("Basic formatting %s==%s",s4,s5))
-- Date formatting
date = 2; month = 1; year = 2014
print(string.format("Date formatting %02d/%02d/%03d", date, month, year))
-- Decimal formatting 小数格式
print(string.format("%.4f",1/3))
print(string.format("%c", 83) ) --输出 S
print(string.format("%+d", 17.0) ) --输出+17
print(string.format("%05d", 17)) --输出 00017
print(string.format("%o", 17) ) --输出 21

print(string.format("%x", 13) ) --输出 d
print(string.format("%X", 13) ) --输出 D
print(string.format("%e", 1000) ) --输出 1.000000e+03
print(string.format("%E", 1000) ) --输出 1.000000E+03
print(string.format("%6.3f", 13) ) --输出 13.000
print(string.format("%s", "monkey") ) --输出 monkey
print(string.format("%10s", "monkey") ) --输出 monkey

string.char 函数用于将数字转换为字符。

-- 将数字 65 转换为字符 "A"
print(string.char(65)) -- A

string.byte(s [, i [, j ]]) 函数用于获取字符串 s 的字节。

-- 获取字符串 "Hello, world!" 的字节
for i = 1, #"Hello, world!" do
    print(string.byte("Hello, world!", i))
end

分割 string.sub
string.sub(s, i, j) 函数用于截取字符串 s 的子串,从 i 开始到 j 结束。

-- 截取字符串 "Hello, world!" 的子串 "world"
print(string.sub("Hello, world!", 8, 12)) -- world

upper/lower

s = "Lua";
print(string.upper(s))
print(string.lower(s))

t = {"ax","Cy","mk","Bjlk"}

for k,v in ipairs(t) do
print(k,v)
end

print("----------")
table.sort( t, function (a,b) -- sort是Lua中的内置函数,第一个参数是要排序的表,第二个参数是排序函数
return string.lower(a)<string.lower(b)
end )

for k,v in ipairs(t) do
print(k,v)
end
print("----------")

print(table.concat(t,"-")) -- 连接表中的元素,用指定字符串分隔

.char/byte/len/rep

--ASCII-》字符(串)
print(string.char())
print(string.char(48, 49, 50, 51, 52)) --01234
print(type(string.char(48, 49, 50, 51, 52))) --string
--字符(串)-》ASCII-》
print(string.byte("12345")); --'1' ->49
print(string.byte("12345", 3)); --'3' ->51
print(string.byte("12345", 1, 5)); --49 50 51 52 53
--长度
print(string.len("12345")) --5
--重复
print(string.rep("nzhsoft", 5))
--nzhsoftnzhsoftnzhsoftnzhsoftnzhsoft

sub/replce/find/reverse

--string.sub 下标分割
s2 = "[Lua nzhsoft]"
print(string.sub(s2, 2)) --Lua nzhsoft] 去除头
print(string.sub(s2, 2, 6)) --Lua n 下标分割 2-6  
print(string.sub(s2, 2, -2)) --Lua nzhsoft 去除头尾 -2是倒数第二个字符
-- replacing strings 替换
ns = string.gsub(s2,"nzhsoft","Language")
print("The new string is",ns) -- [Lua Language]
-- find strings 查找 返回下标
s3 = "Lua Tutorial"
print(string.find(s3,"nzhsoft")) --5 12 从头开始找
print(string.find(s3,"nzhsoft",-1)) --nil -1是从后往前找
print(string.find(s3, "Tutorial", -#s3)) --5 12 -#s3是字符串长度
--reverse strings 反转
s4 = "Hello, world!"
print(string.reverse(s4)) --!dlrow ,olleH
### 解决Milvus导致服务器卡顿的方法 #### 调整资源分配 当运行 Milvus 时,确保合理配置 CPU 和内存资源。通过 Docker 启动参数可以限制容器使用的资源量: ```bash $ sudo docker run -d --memory="8g" \ -p 19530:19530 \ -p 19121:19121 \ -v /home/$USER/milvus/db:/var/lib/milvus/db \ -v /home/$USER/milvus/conf:/var/lib/milvus/conf \ -v /home/$USER/milvus/logs:/var/lib/milvus/logs \ -v /home/$USER/milvus/wal:/var/lib/milvus/wal \ milvusdb/milvus:latest-cpu-d061621-330cc6 [^2] ``` 这有助于防止因过度占用主机资源而导致其他应用程序响应缓慢。 #### 配置持久化存储路径 指定合适的磁盘位置用于保存数据文件非常重要。如果默认目录位于根分区,则可能影响整体性能。建议将 `base_data_dir` 设置到专用的数据卷上: ```python config = MilvusServerConfig() config.base_data_dir = '/mnt/data/milvus_austin_base_data_dir' server = MilvusServer(config, debug=True) server.start() [^1] ``` 这样不仅提高了读写速度,还减少了对系统盘的压力。 #### 使用高性能硬件加速 对于大规模向量检索场景,考虑采用 GPU 版本的 Milvus 或者启用 FPGA 加速功能来提升查询效率并降低延迟[^3]。 #### 监控与调优 定期监控服务器状态以及 Milvus 的各项指标,及时发现潜在瓶颈所在。可借助 Prometheus + Grafana 组合实现可视化管理;同时调整相关参数如索引构建方式、缓存大小等优化操作体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值