littleknife 发表于 2010-11-16 13:24:22

请教一个字符串处理的问题。

有一个字符串,既有中文也有英文。比如
string="543abcdefg我有一oi0987个字符串abcd001234"

我想用函数的方法,截取出内部的汉字。形成一个新的字符串,然后每个汉字存入表格string_table里。
比如这个例子,
我希望的结果就是:
截取的字符串是:mystring="我有一个字符串",并且string_table="我",string_table="有".....。
请问,lua程序如何处理呢?
请高手指点如何做到。谢谢!!

[ 本帖最后由 littleknife 于 2010-11-16 01:26 PM 编辑 ]

ddid 发表于 2010-11-16 13:26:50

能确定字符串中中文的编码么?是 GBK 还是 UTF-8 ?

littleknife 发表于 2010-11-16 13:29:43

能弄一个单独的lua函数处理就成。
用赋值命令赋值字符串,string="....",应该是系统默认编码。

ddid 发表于 2010-11-16 13:43:21

原帖由 littleknife 于 2010-11-16 13:29 发表 http://pkuxkx.com/forum/images/common/back.gif
能弄一个单独的lua函数处理就成。
用赋值命令赋值字符串,string="....",应该是系统默认编码。

编码必须搞清楚,因为环境不一样,虽然 Lua 都能处理,但结果却大不相同。

littleknife 发表于 2010-11-16 13:48:07

MUSH中用赋值语句赋值的字符串属于什么编码?是utf8?还是ansi,好像是ansi.

ddid 发表于 2010-11-16 13:51:33

MUSH 从 MUD 中接收到的字符串,是由 MUD 决定的,相对北侠来说,因为北侠的编码是 GB2312 的,所以 MUSH 中接收到的字符串都是 GB2312 的。

ddid 发表于 2010-11-16 14:08:24

如果是 GBK,下面的代码就可以了。local a_str = "543abcdefg我有一oi0987个字符串abcd001234"

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

local str_t = {}

for i = 1, #a_str, 2 do

local b_str = string.sub(a_str,i,i+1)

table.insert(str_t, b_str)

end --for

table.foreach(str_t, print)

[ 本帖最后由 ddid 于 2010-11-16 02:09 PM 编辑 ]

littleknife 发表于 2010-11-16 14:58:55

再次感谢,DDid,哈哈。太有用啦。ttk_00 ttk_00

ddid 发表于 2010-11-16 15:01:46

用来干啥?

littleknife 发表于 2010-11-16 15:13:19

哈哈。用来识别两个字符串的拟合程度。。比如,红豆题目乱码、在比如对比地点找金子等等。嘿嘿。。ttk_10

[ 本帖最后由 littleknife 于 2010-11-16 03:15 PM 编辑 ]
页: [1] 2 3 4
查看完整版本: 请教一个字符串处理的问题。