Blame view

docs/stringhelper.txt 2.75 KB
314bc5df   zhengshouren   提交服务器初始代码
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
  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