I need to extract the first integer found in a java.lang.String
and am unsure as to whether to try and use a substring
approach or a regex approach:
// Want to extract the 510 into an int.
String extract = "PowerFactor510";
// Either:
int num = Integer.valueof(extract.substring(???));
// Or a regex solution, something like:
String regex = "\\d+";
Matcher matcher = new Matcher(regex);
int num = matcher.find(extract);
So I ask:
Note: The string will always begin with the word PowerFactor
followed by a non-negative integer. Thanks in advance!
The string will always begin with the word "PowerFactor" followed by a non-negative integer
This means you know exactly at which index you will find the number, i would say you better use the substring directly, at least considering the performance it would be much faster than searching and matching work.
extract.substring("PowerFactor".length());
I could not find any direct comparision but you can read about each one of the two options:
Was a bit curious and tried the following
String extract = "PowerFactor510";
long l = System.currentTimeMillis();
System.out.println(extract.replaceAll("\\D", ""));
System.out.println(System.currentTimeMillis() - l);
System.out.println();
l = System.currentTimeMillis();
System.out.println(extract.substring("PowerFactor".length()));
System.out.println(System.currentTimeMillis() - l);
And it tuned out that the second test was much faster, so substring
wins.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.