Java-按数字和字母拆分字符串

所以我有一个像这样的字符串 C3H20IO

我想做的就是分割此字符串,以便得到以下信息:

Array1 = {C,H,I,O}

Array2 = {3,20,1,1}

1作为对所述第三元件Array2是指示所述的单原子性质I元件。相同O。这实际上是我正在努力的部分。

这是一个化学方程式,因此我需要根据元素的名称和存在的原子数量等来分离元素。

回答:

您可以尝试这种方法:

String formula = "C3H20IO";

//insert "1" in atom-atom boundry

formula = formula.replaceAll("(?<=[A-Z])(?=[A-Z])|(?<=[a-z])(?=[A-Z])|(?<=\\D)$", "1");

//split at letter-digit or digit-letter boundry

String regex = "(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)";

String[] atoms = formula.split(regex);

输出:

原子:[C,3,H,20,I,1,O,1]

现在所有偶数索引(0、2、4 …)都是原子,奇数是关联的数字:

String[] a = new String[ atoms.length/2 ];

int[] n = new int[ atoms.length/2 ];

for(int i = 0 ; i < a.length ; i++) {

a[i] = atoms[i*2];

n[i] = Integer.parseInt(atoms[i*2+1]);

}

输出:

a:[C,H,I,O]

n:[3、20、1、1]

以上是 Java-按数字和字母拆分字符串 的全部内容, 来源链接: utcz.com/qa/430195.html

回到顶部