在java中提取字符串的一部分

在java中提取字符串的一部分,java,Java,我是java新手,我有一个关于字符串的问题 如果我有: String example="PostID:123"; 我如何获取123号并将其存储在另一个字符串中? 谢谢一种解决方案是根据:输入字符串并返回第二部分: String newString = example.split(":")[1]; 如果您的字符串可以是:PostID:123456 xy bla bla bla bla,则可以执行以下操作: String newString = example.split(":")[1].spl

我是java新手,我有一个关于字符串的问题

如果我有:

String example="PostID:123";
我如何获取123号并将其存储在另一个字符串中? 谢谢

一种解决方案是根据:输入字符串并返回第二部分:

String newString = example.split(":")[1];
如果您的字符串可以是:PostID:123456 xy bla bla bla bla,则可以执行以下操作:

String newString = example.split(":")[1].split(" ")[0]; //Will contain 123456
示例.拆分:[1]将包含123456 xy bla bla bla bla bla,然后我们根据空格进行拆分,并返回第一个元素,该元素将包含123456

请注意,此解决方案假定字符串的结构与您所说的完全相同。对于更通用的字符串,您可以获得更好的解决方案,例如:

String example="PostID   :   12312 xy abc asd ";
Pattern p = Pattern.compile(":\\s*(.*?)\\s+");
Matcher m = p.matcher(example);
if (m.find()) {
    System.out.println(m.group(1)); //Will print 12312
}
使用字符串API中可用的子字符串方法


一种快速方法是使用以下方法:

若您确切地知道源代码的格式,或者您知道此格式永远不会更改,那个么这是有效的

另一种方法是,如果您不知道字符串的确切格式并且不喜欢正则表达式,则使用char数组和StringBuilder:

StringBuilder b = new StringBuilder(); // or StringBuffer
for (char c: source.toCharArray()) {
   if (Character.isDigit(c)) {
      b.append(c);
   }
}
String numString = b.toString();

使用字符串的拆分方法

编辑:根据对另一个答案的评论。。。询问者也有空格,所以我正在更新正则表达式以拆分:或空格


如果我有PostID:123xy,我可以写:System.out.printlnexample.split:[];要得到号码吗?不,这是另一种情况。改变你的问题。我们误解了你。String example=PostID:randomnumber xy abc,我如何获得随机数?请参阅我编辑的答案。我想在PostID:,我如何获得数字?如果你在谷歌上写下相同的问题标题,将有多个答案。
StringBuilder b = new StringBuilder(); // or StringBuffer
for (char c: source.toCharArray()) {
   if (Character.isDigit(c)) {
      b.append(c);
   }
}
String numString = b.toString();
public class Test {

  public static void main(String[] args) {
    String example="PostID:123 xy zy";
    String[] vals = example.split(":|\\s");
    for (int i = 0; i < vals.length; i++){
      System.out.println(vals[i]);
    }
  }

}
PostID
123
xy
zy
String example="PostID:123";

String numString = example.subString(example.lastIndexOf(":"));