其实本来想和跑团的同志们一起做一个Web Form的跑团平台,不过发现工程似乎比较大(对于我等编程新手而言),于是就打算将其分成一块一块。
我先自己做了处理掷骰命令的程序(其实是一个函数,输入一个字符串,输出一个字符串),顺便实践了一下前一阵在书本上学习的 正则表达式 。
说起来, 正则表达式 还真是一个得心应手的文本处理小工具啊!整个函数中仅用了三行就将骰子数、骰子面数等字符串匹配提取并分类了出来。
对应的正则表达式为: /[rR]\s+(((\d+)[dD](\d+))\+?)+((-?\d+)\+?)*(\s+.*)*
(已修正标点符号bug和部分修正减法bug后)
这个程序能处理形如:
/r 1d20
/R 1d20+3d8+1
/r 1d100 测人品~
/R 1d8+2d6+12+22+32 不知道在R什么,囧……
等D&D掷骰命令。下面是截图:
不过目前功能一些限制,如:
1、只能处理加法运算(加负数也不行)——部分已修正,目前支持调整值部分的减法,可以为“/r 1d20-7”或“/r 1d20+-7”这样的形式,但不能减去负数(即 “/r 1d20–7″)
2、掷骰部分 必须在 调整值部分 之前,不支持 掷骰部分 和 调整值部分 混合运算(如:/r 1d20+2+1d8+5)
3、说明文字部分,对中英文的标点符号都不是很支持(如上述第四个例子中“,”及之后的文字被略去了……) ——已修正
非常感谢。这个对我帮助很大