【问题标题】:Get a specific value from a string in Java [closed]从Java中的字符串获取特定值[关闭]
【发布时间】:2012-05-25 04:06:55
【问题描述】:

我想从字符串中获取一些值。例如:

String string= "Name: armand," + "Age: 22," + "etc";

如何使用正则表达式获取例如名称?

我的正则表达式很糟糕,所以我不知道如何解决这个问题。

【问题讨论】:

  • 那么你的字符串是这样的吗? "Name: armandAge: 22"...
  • 您将其与名称后的所有内容匹配
  • 确实,字段之间似乎没有任何分隔符。
  • 你试过什么。有些网站和程序可以帮助您构建正则表达式。您也可以简单地阅读一个如何工作并自己构建它。
  • @ArmandNdizigiye - 你应该更新你的问题,否则它可能会被锁定,因为你的 questin 目前很差。

标签: java regex string


【解决方案1】:

抱歉,它实际上看起来像这样 Name:armand,Age:22,etc.但我很 正则表达式不好,这对我来说很难解决。

给定String s = "Name:armand,Age:22";

这里有一个提示:

s.split(",")[0].split(":")会给你armand

s.split(",")[1].split(":") 会给你22

不需要正则表达式知识。

有些人在遇到问题时会想“我知道,我会用 常用表达。”现在他们有两个问题。 - 杰米扎温斯基

【讨论】:

  • 您可以更改它以使用substringsplit 方法将任何输入视为正则表达式并尝试对其进行编译,无论您是否有意。
  • @JarrodRoberson 感谢它的工作
【解决方案2】:

取决于您真正想要做什么,例如,如果您只想获取给定键的值,假设键和值用冒号分隔,键/值用逗号分隔,您可以拆分这种方式首先用逗号,然后用冒号:

String[] couple = string.split(",");

 for(int i =0; i < couple.length ; i++) {
    String[] items =couple[i].split(":");
    items[0]; //Key
    items[1]; //Value
}

如果你想用正则表达式来做,你可以这样做:

    String string = "Name:armand,Age:22,";
    Pattern pattern = Pattern.compile("(\\w+?):(\\w+?),");
    Matcher matcher = pattern.matcher(string);
    while (matcher.find()) {
        String key = matcher.group(1);
        String value = matcher.group(2);

        System.out.println("Key : " + key + " value : " + value);
    }

【讨论】:

  • 谢谢。使用 split 肯定更容易。我意识到知道,我必须更多地研究正则表达式:)。
猜你喜欢
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多