北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
楼主: littleknife

再次请教一个字符串处理问题。(mush lua)

[复制链接]
发表于 2010-11-30 17:56:41 | 显示全部楼层
原帖由 ddid 于 2010-11-30 05:44 PM 发表
MUSH + LUA

还是很爽滴 。。。。。。


就是啊,用在嵌入脚本的情况下很好。但是要用它干点通用的活,比如这个字符串处理,就麻烦了。连个split都要。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-11-30 17:57:27 | 显示全部楼层
各位大神们,请给个清晰点的答案吧。jason的我没有调试环境,也没完全看懂(以为代码不全)。

我的代码错在哪里?。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-30 17:58:11 | 显示全部楼层
原帖由 littleknife 于 2010-11-30 05:57 PM 发表
各位大神们,请给个清晰点的答案吧。jason的我没有调试环境,也没完全看懂(以为代码不全)。

我的代码错在哪里?。。


你的代码说实话有点乱。可以肯定得一错误是最后剩下的部分你没处理。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-30 18:46:30 | 显示全部楼层
  1. else
  2. nowait_string_num=nowait_string_num+1
  3. nowait_string=nowait_string..v..";"
  4. end--if
复制代码


这里没有 temp_path_table 什么事 ?
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-30 18:48:49 | 显示全部楼层
把 Jason 的 Python code 用 Lua 重写了一遍,发现确实和你的思路差不多 。。。。。。

北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-11-30 18:49:09 | 显示全部楼层
原帖由 ddid 于 2010-11-30 06:46 PM 发表
else
nowait_string_num=nowait_string_num+1
nowait_string=nowait_string..v..";"
end--if

这里没有 temp_path_table 什么事 ?


这里的思路其实就是和jason一样的,当间隔小于规定值的时候 只是累加字符到nowait_string。只不过我这里的变量名长了点,看的不清楚。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-11-30 18:50:19 | 显示全部楼层
关键是Python的,for,if 到哪里终止,没看懂。。翻译后也有问题。。
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-30 19:02:57 | 显示全部楼层
唉~,放弃去理解胡小子的代码了,直接把翻译Jason的放上来了:

  1. str="e;e;e;w;w;w;wa(1);e;e;w;e;wa(4);u;d;e;w;e;s;sw;wa(2);e;e;e;e;w;w;u;d;sw;e;se;su;sd;"
  2. arr = split(str, ";")
  3. result = {}
  4. count = 0
  5. wait_step = 5
  6. line = ""
  7. for _, v in ipairs(arr) do
  8.         if string.sub(v, 1, 2) ~= "wa" then
  9.                 if count >= wait_step then
  10.                         table.insert(result, line)
  11.                         table.insert(result, "wa(1);")
  12.                         count = 0
  13.                         line = ""
  14.                 end --if
  15.                 line = line .. v .. ";"
  16.                 count = count + 1
  17.         else
  18.                 if #line ~= 0 then
  19.                         table.insert(result, line)
  20.                         count = 0
  21.                         line = ""
  22.                 end --if
  23.                 v = v .. ";"
  24.                 table.insert(result, v)
  25.         end --if
  26. end --for

  27. str1 = table.concat(result)

  28. print(str1)
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
发表于 2010-11-30 19:09:11 | 显示全部楼层
要修改一下
arr=utils.split(str,";")
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
 楼主| 发表于 2010-11-30 19:23:19 | 显示全部楼层
哈哈,他的代码也是错误的,我测试过啦。。。不过这个问题我已经解决啦。。。


  1. ---------运行结果如下----------------
  2. 1 e;e;e;w;w
  3. 2 wa(1)
  4. 3 w
  5. 4 wa(1)
  6. 5 e;e;w;e
  7. 6 wa(4)
  8. 7 u;d;e;w;e
  9. 8 wa(1)
  10. 9 s;sw
  11. 10 wa(2)
  12. 11 e;e;e;e;w
  13. 12 wa(1)
  14. 13 w;u;d;sw;e
  15. 14 wa(1)
  16. 15 se;su;sd
复制代码
北大侠客行Mud(pkuxkx.com),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-11-24 07:17 PM , Processed in 0.012244 second(s), 12 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表