Java 在字符串中搜索常量+变量组合的序列

Java 在字符串中搜索常量+变量组合的序列,java,string,stringbuilder,Java,String,Stringbuilder,我有一个字符串S=aabb:1cc:2dd:30ee:149 如何循环字符串S和1乘1,获取以:开头的每个数字,并将它们保存在Int中 例如 所以我得到了输出: :1 :2 :30 :149 试试正则表达式 public static void main(String[] args) { String s = "AA AA BB :1 CC :2 DD :30 EE :149"; Pattern p = Pattern.compile(":\\d+"); Matcher

我有一个字符串S=aabb:1cc:2dd:30ee:149

如何循环字符串S和1乘1,获取以:开头的每个数字,并将它们保存在Int中

例如

所以我得到了输出:

:1
:2
:30
:149
试试正则表达式

public static void main(String[] args) {
    String s = "AA AA BB :1 CC :2 DD :30 EE :149";
    Pattern p = Pattern.compile(":\\d+");
    Matcher m = p.matcher(s);
    while (m.find()) {
        System.out.println(m.group());
    }

}
O/p:


您可以使用

示例代码:

String s = "AA AA BB :1 CC :2 DD :30 EE :149";

Pattern p = Pattern.compile("(?<=:)\\d+");
Matcher m = p.matcher(s);
while (m.find()) {
    int number = m.group()
    System.out.println(":"+number);
}
正则表达式模式解释:

  (?<=                     look behind to see if there is
    :                        ':'
  )                        end of look-behind
  \d+                      digits (0-9) (1 or more times (most possible))

为了完成这项工作,并避免出现两个问题,无需使用正则表达式即可轻松实现:

String s = "AA AA BB :1 CC :2 DD :30 EE :149";
String[] parts = s.split(" ");
for(String part : parts) {
    if(part.startsWith(":")) {
        System.out.println(part);
    }
}

这假设所需的输出是以:,而不仅仅是数字开头的任何内容,尽管可以很容易地升级以仅查找数字。

使用正则表达式?您可以使用正则表达式、正则表达式:\d+和find来迭代搜索int,请参阅,使用StringSubString删除:,并将其解析为int。如果有问题,请尝试一些方法,在这里问吧!,但是先试试看!。并假设分隔符是一个空间。
  (?<=                     look behind to see if there is
    :                        ':'
  )                        end of look-behind
  \d+                      digits (0-9) (1 or more times (most possible))
String s = "AA AA BB :1 CC :2 DD :30 EE :149";
String[] parts = s.split(" ");
for(String part : parts) {
    if(part.startsWith(":")) {
        System.out.println(part);
    }
}