Getting a substring from a string after a particul

2019-02-09 05:34发布

问题:

I have below String.

ABC Results for draw no 2888

I would like to extract 2888 from here. That means, I need to extract characters after no in above string.

I'm always extract the number after the word no. The String contain no other no letter combinations elsewhere within it. String may contain other numbers and I don't need to extract them. Always there will be a space before the number and the number I wish to extract always be at the end of the String.

How could I achieve this ?

回答1:

yourString.substring(yourString.indexOf("no") + 3 , yourString.length());


回答2:

You may try this

String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));


回答3:

You always want to strive something that is easy to configure and modify. That is why I always recommend to choose Regex Pattern matching over other searches.

Example, consider this for your example:

import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Play {
  public static void main(String args[]) { 
    Pattern p = Pattern.compile("^(.*) Results for draw no (\\d+)$");
    Matcher m = p.matcher("ABC Results for draw no 2888");
    m.find();
    String groupName = m.group(1);
    String drawNumber = m.group(2);
    System.out.println("Group: "+groupName);
    System.out.println("Draw #: "+drawNumber);
  }
}

Now from the provided pattern, I can easily identify the useful parts. It helps me to identify problems, and I can identify additional parts in the pattern that is useful to me (I have added the group-name).

Another clear benefit is that I can store easily this pattern externally in a configuration file.