我正在尝试为一个应用程序编写一个方法,该方法采用化学公式,例如“CH3COOH”,并返回某种充满符号的集合。

CH3COOH将返回[C,H,H,H,C,O,O,H]

我已经有了一些可以正常工作的东西,但是它非常复杂,并且使用了大量带有嵌套if-else结构和循环的代码。

有没有一种方法可以通过将某种正则表达式与String.split一起使用,或者以其他出色的简单代码来实现?

最佳答案

假设正确将其大写,则方程中的每个符号都与该正则表达式匹配:

[A-Z][a-z]*\d*

(对于受化学药品挑战的元素,其符号始终为大写字母,后跟可选的一个小写字母或两个小写字母,例如 Mercurial 的 Mercurial )

您可以像这样捕获元素符号和组中的数字:
([A-Z][a-z]*)(\d*)

所以是的,从理论上讲,这将有助于正则表达式。如果您正在处理像C6H2(NO2)3(CH3)3这样的公式,那么您的工作当然会难一些...

10-07 20:32