启动索引已知时,Substring与RegEx之间的性能比较

IAm*_*aja 7 java regex string

我需要提取a中找到的第一个整数,java.lang.String并且不确定是否尝试使用substring方法或正则表达式方法:

// 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);
Run Code Online (Sandbox Code Playgroud)

所以我问:

  • 哪种解决方案更合适,为什么?和
  • 如果子串方法更合适,我可以用什么来表示数字的开头?
  • 否则,如果正则表达式是合适的解决方案,那么我应该使用什么样的正则表达式/模式/匹配器/方法来提取数字?

注意:字符串将始终以单词PowerFactor后跟非负整数开头.提前致谢!

Clo*_*ble 9

该字符串将始终以单词"PowerFactor"开头,后跟非负整数

这意味着你确切地知道你会在哪个索引找到这个数字,我想你最好直接使用子字符串,至少考虑一下它会比搜索和匹配工作快得多.

extract.substring("PowerFactor".length());
Run Code Online (Sandbox Code Playgroud)

我找不到任何直接的比较,但你可以阅读以下两个选项中的每一个: