stringhelper.txt
2.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
stringUtil.lua 中提供的接口
============
接口设计参考 redis 方式
针对 "K1=V1 K2=V2 ... Kn=Vn" 结构的CRUD(增删改查)操作
K1~Kn是唯一的;K1~Kn,V1~Vn都为整数,不可为浮点数
setv 操作为修改 k 的值 v,若不存在 k 则将k=v附在字符串末尾
string.setv(str, k, v, delimiter)
msetv 操作为修改 {[k1]=v1, [k2]=v2, ..., [kn]=vn} 中对应的kv值,若字符串中不包含则以 k=v 的形式附在末尾
string.msetv(str, vs, delimiter)
incrv 操作为修改 k 对应的值 +delta,若字符串中不包含则以 k=delta 的形式附在末尾
string.incrv(str, k, delta, delimiter)
mincrv 操作为修改 {[k1]=d1, [k2]=d2, ..., [kn]=dn} 中对应的k 是与之对应的 v+d,若字符串中不包含则以 k=d 的形式附在末尾
string.mincrv(str, ds, delimiter)
delk 操作为 删除字符串中 包含k 的k=v结构, 若不存在则跳过
string.delk(str, k, delimiter)
mdelk 操作为 删除字符串中 包含 {k1, k2, ..., kn} 中任意元素的结构,若不存在则跳过
string.mdelk(str, ks, delimiter)
getv 操作为 获取字符串中 包含 k 中的 v 值,若不存在返回default值
string.getv(str, k, default, delimiter)
如果要获取多个k的值,则可通过 string.toNumMap() 将字符串转化为 一个table,通过访问table获取相应的值
ps:尽量将多个操作集中为一个table 然后调用 string.msetv or string.mdelk
============
string.setv_dk(str, k1, k2, v, delimiter)
string.msetv_dk(str, vs, delimiter)
string.incrv_dk(str, k1, k2, delta, delimiter)
string.mincrv_dk(str, ds, delimiter)
string.delk_dk(str, k1, k2, delimiter)
string.mdelk_dk(str, ks, delimiter)
string.getv_dk(str, k1, k2, default, delimiter)
string.toNumMap(str, delimiter)
这里是多键结构,操作含义如上
============
"N1#N2#...#Nn" 是一个集合
toArray #为任意分隔符 生成 {N1, N2, ..., Nn}
string.toArray(str, toNum, delimiter)
value 获取某个序号的元素 序号范围 1~n
string.value(str, index, default, notNum, delimiter)
sismember 是否存在 value 元素
string.sismember(str, value, delimiter)
sadd 添加 值为value 元素,若存在则跳过
string.sadd(str, value, delimiter)
srem 删除 值为value 元素
string.srem(str, value, delimiter)
============
直接从字符串中 随机
string.randWeight(str, bMulti)
string.randLine(str)
============
"1010101" 由1,0组成的元素
getbit 获取序号pos 的元素
string.getbit(str, pos)
bitcnt 获取 元素值为1 的个数
string.bitcnt(str)
设置位置为pos的值为yes
string.setbit(str, pos, yes)
============
lua-strh.c 中为lua层提供的接口,这些都是辅助接口,不要直接在逻辑代码中直接使用,使用stringUtil.lua中封装后的接口
modify
moddk
getv
getvdk
toarray
tonummap
value