【问题标题】:How to read an int number from a string containing numbers and letters?如何从包含数字和字母的字符串中读取一个 int 数字?
【发布时间】:2020-08-05 17:13:01
【问题描述】:

我有一个包含一系列字母和 int 数字 A1B12C21D24 的字符串,我想创建一个 hashMap,其键是字符串中的字母和值 - 这些字母后面的数字。所以我的对应该是 1 乙 12 C 21 24岁 我正在用 charAt(0) 读取第一个字母,但是数字可以是任意数量的字符,所以我想出的唯一想法是一个接一个地获取字符,看看它们是否是数字,将其存储在另一个 int 变量中因此,我乘以 10 并添加下一个数字,直到我再次达到字母 char。然而,这似乎有很多循环,我不确定是否有更有效的方法来做到这一点

【问题讨论】:

  • 您可以使用一些简单的正则表达式找到所有数字并从那里开始。

标签: java string


【解决方案1】:

例如你可以这样做:

Map<String, String> map = new HashMap<>();
Pattern pattern = Pattern.compile("(\\D+)(\\d+)");
Matcher matcher = pattern.matcher("A1B12C21D24 ");
while (matcher.find()) {
    map.put(matcher.group(1), matcher.group(2));
}
System.out.println(map);

输出:

{A=1, B=12, C=21, D=24}

【讨论】:

    【解决方案2】:

    您可以尝试String[] pairs = InputString.split("(?=[A-Z])"),然后使用String[] letterAndNumber = pairs[i].split("(?&lt;=[A-Z])") 遍历数组

    那么你只需将它分别保存到HashMap。

    answer 中阅读有关强大正则表达式的更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      相关资源
      最近更新 更多