作为我在Lua的第一个真正的程序,我想创建一个分子量计算器(类似于这里的那个:http://www.lenntech.com/calculators/molecular/molecular-weight-calculator.htm)
我想帮助这个程序的第一步。我的第一步应该是将用户输入作为字符串,而不是拆分字符串。我正在查看http://lua-users.org/wiki/StringLibraryTutorial并试图找出如何做到这一点。当用户输入为CH4时,程序应将此字符串拆分为C
和H4
。这是我的代码:
H = 1.008
C = 12.011
N = 14.007
O = 15.999
io.write("Enter molecular formula")
input = io.read()
result =
print("the molecular weigth is" .. result)
有人可以告诉我如何将用户输入作为字符串接受以及如何拆分该字符串吗?
根据要求修改,我在我的确切问题中更加具体
答案 0 :(得分:4)
以下是您可以选择的方式:
从标准输入中获取输入字符串:
input = io.read()
将Cr(NO2)2
之类的字符串转换为字符串Cr+(N+O*2)*2
。化学元素名称的本质是它都以大写字母开头,后跟零或多个小写字母,因此规则可以是:每当遇到大写字母或"("
时(除非它是&#39) ; s是第一个或前面有"("
),在其前面插入"+"
,遇到号码时,在其前面插入"*"
。
计算字符串Cr+(NO*2)*2
的结果,这是Lua的美丽,它是一个合法的Lua表达式,所以只需加载字符串并得到结果:
str = "Cr+(N+O*2)*2"
func = assert(load("result = " .. str))
func()
print("the molecular weigth is" .. result)
在Lua 5.1中,在loadstring()
的位置使用load()
。