ddid 发表于 2010-11-16 15:16:21

噢,有意思 。。。

seagate 发表于 2010-11-16 16:15:31

穷举法去掉a-zA-Z0-9就行了,常用的一共就这些,最多加上一些标点符号

ddid 发表于 2010-11-16 16:29:42

原帖由 littleknife 于 2010-11-16 15:13 发表 http://pkuxkx.com/forum/images/common/back.gif
哈哈。用来识别两个字符串的拟合程度。。比如,红豆题目乱码、在比如对比地点找金子等等。嘿嘿。。ttk_10

不断地 for v in ipairs(hongdou_ti) do ... 也是一种解决红豆乱码的办法。

hba 发表于 2010-11-16 18:28:56

用双字节来获取汉字的方式,我曾在mush 443下做过,发现还是有些汉字是截取不了的,应该类似ddid那样的做法吧。不知道现在高版本的mush好些了没。

ddid 发表于 2010-11-16 18:41:55

发现还是有些汉字是截取不了的

最好举例说明。

hba 发表于 2010-11-16 18:56:33

原帖由 ddid 于 2010-11-16 18:41 发表 http://www.pkuxkx.com/forum/images/common/back.gif


最好举例说明。

很久以前,不是很记得了,也有可能是我算法有问题。试了一下ddid这个还是挺好的,不过遇到空格还是有点问题。
字符串:local a_str = "543abcdefga我有一o二i三0四9五8六7七八h九a十个字符串abcd001234"
效果:

1 我
2 有
3 一
4 二
5 三
6 四
7 五
8 六
9 七
10 八
11 九
12 十
13 个
14 字
15 符
16 串


字符串:local a_str = "543abcdefga我有一 o 二i三0四9五8六7七八h九a十个字符串abcd001234"
第一个空格是半角,第二个空格是全角。
效果:

1 我
2 有
3 一
4?
5 《
6 ?
7 ?
8 奈
9 辶
10 ?
11 甙
12 司
13 攀
14 ?
15 鲎
16 址
17 ?
18 ?

maper 发表于 2010-11-16 20:05:01

用string.byte来判断当前字节是不是大于127,大于的话就当他是汉字,string.sub要取两个字节。

ddid 发表于 2010-11-16 21:00:53

回复 16楼 的帖子

字符串匹配的时候加 %s 就解决了。

ddid 发表于 2010-11-16 21:03:15

原帖由 maper 于 2010-11-16 20:05 发表 http://pkuxkx.com/forum/images/common/back.gif
用string.byte来判断当前字节是不是大于127,大于的话就当他是汉字,string.sub要取两个字节。

没错,对 GBK 连续的两位都要判断,对 UTF-8 需要判断 1-4 位。

hba 发表于 2010-11-16 21:25:22

原帖由 ddid 于 2010-11-16 21:00 发表 http://www.pkuxkx.com/forum/images/common/back.gif
字符串匹配的时候加 %s 就解决了。

a_str = string.gsub(a_str, "[%a,%d,%p,%s]", "")


1 我
2 有
3 一
4  
5 二
6 三
7 四
8 五
9 六
10 七
11 八
12 九
13 十
14 个
15 字
16 符
17 串
页: 1 [2] 3 4
查看完整版本: 请教一个字符串处理的问题。