gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:19:52 25 4
gpt4 key购买 nike

例如,我有一个像这样的字符串 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);

输出:

atoms: [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 - 按数字和字母分割字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59371375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com