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 ?
yourString.substring(yourString.indexOf("no") + 3 , yourString.length());
You may try this
String example = "ABC Results for draw no 2888";
System.out.println(example.substring(example.lastIndexOf(" ") + 1));
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.