1

作为我在 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)

有人可以告诉我如何接受用户输入作为字符串以及如何拆分该字符串吗?

编辑:根据要求,我在我的确切问题中更加具体

4

1 回答 1

4

以下是您可以开始的一种可能方式:

  1. 从标准输入中获取输入字符串:

    input = io.read()
    
  2. 将 string like 转换Cr(NO2)2为 string Cr+(N+O*2)*2。化学元素名称的本质是它都以大写字母开头,后跟零个或多个小写字母,因此规则可能是:只要"("遇到大写字母或 a (除非它是第一个或前面有 a "(") ,"+"在它之前插入a,每当遇到数字时,"*"在它之前插入a。

  3. 从字符串计算结果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()

于 2014-04-03T03:43:03.763 回答