当前位置: 首页 > 面试题库 >

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

魏翔
2023-03-14
问题内容

所以我有一个像这样的字符串 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]



 类似资料:
  • 问题内容: 输入示例: 输出示例: 字母和数字部分的长度不固定。 我知道如何将split()与regex一起使用,但是尽管我检查了Java API,但找不到任何可以帮助我解决此问题的东西。 有没有办法做到这一点?或者我需要使用另一种方法来拆分这些字符串。 任何帮助,将不胜感激。 问题答案: 试试这个正则表达式: 这是一个正在运行的示例:http : //ideone.com/c02rmM 正则表达

  • 尝试查找正则表达式以获取字符串的最后一个字符String=“a76b62zf63” 通过正则表达式查找最后一个字符返回“F”

  • 我正在尝试找到正则表达式以获得字符串的最后一个字符: 通过正则表达式查找最后一个字符应返回“F”。

  • 问题内容: 我认为这是一个简单的问题,但是我找不到简单的解决方案(例如,少于10行代码:) 我有一个诸如,我需要将其转换为。 请注意,首字母不是大写。 问题答案: 您可以将正则表达式使用零宽度正向超前-它可以找到大写字母,但不会将它们包括在定界符中: ,后跟,但不包含在match中。因此,匹配一个空序列后跟一个大写字母,并将其用作定界符。 有关Java regexp语法的更多信息,请参见javad

  • 问题内容: 任何人都可以通过正则表达式来帮助我。我想将以下字符串拆分为字母和数字。 分割后的示例字符串应为 和。 我尝试了以下正则表达式。 大写返回 但对于小写字母则返回 有没有办法得到像 问题答案: 您可以使用: 正则演示

  • 问题内容: 使用功能split拆分此String。这是我的代码: 当我尝试这样做时,spli只包含一个字符串。似乎Java在拆分时看不到“ ^”。有人知道如何用字母“ ^”分割此字符串吗? 编辑 解决了:P 问题答案: 这是因为需要一个正则表达式,而不是文字字符串。您必须转义,因为它在regex(字符串开头的锚点)中具有不同的含义。因此,拆分实际上是在第一个字符之前完成的,从而使您完整地返回了完整