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 ?
To get the substring after a specific character, call the substring() method, passing it the index after the character's index as a parameter. The substring method will return the part of the string after the specified character. Copied! We used the String.
Use the substring() method to get the substring before a specific character, e.g. const before = str. substring(0, str. indexOf('_')); . The substring method will return a new string containing the part of the string before the specified character.
The substr() method extracts a part of a string. The substr() method begins at a specified position, and returns a specified number of characters. The substr() method does not change the original string. To extract characters from the end of the string, use a negative start position.
You can extract a substring from a String using the substring() method of the String class to this method you need to pass the start and end indexes of the required substring.
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.
For anyone willing to achieve this with the ubiquitous Apache Commons StringUtils:
String parsed = StringUtils.substringAfter(yourString, "no ");
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With