我有一个需要解析名称和版本的字符串列表,例如某些字符串如下所示:
应用名称1.2.5
应用程序名称 7.8.b
应用名称7.0
我想要两个字符串列表,一个包含应用程序名称,一个包含版本号,因此一个列表是:
应用名称
应用程序名称
应用程序名称
那么另一个列表将是
1.2.5
7.8.b
3.0
我尝试过仅使用空格来分割字符串,但如果名称始终位于索引 0 中并且版本始终位于索引 1 中,那将是最简单的。所以我尝试了“\\d”(按数字分割) ,但这并不像我想象的那样有效。任何帮助将不胜感激,并提前致谢
最佳答案
拆分在这里并不合适。尝试使用匹配器并使用 group
获取应用程序名称和版本的方法。
Pattern p = Pattern.compile("^(\\D*[^\\d\\s])\\s*(\\d.*)", Pattern.DOT_ALL);
Matcher m = p.matcher(myString);
if (m.find()) {
String appName = m.group(1);
String versionNumber = m.group(2);
...
}
要了解正则表达式的工作原理,请查看以下内容:
^
表示从头开始匹配
(
启动组 1,该组将保存版本名称
\\D*
以任意数量的非数字开头
[^\\d\\s]
并以既不是数字也不是空格的内容结尾。
)
第 1 组结束
\\s*
它可能与版本号分隔零个或多个空格。
(
第 2 组包含版本号。
\\d
以数字开头
.*
并继续输入的其余部分。
)
结束。
关于java - 在java中使用正则表达式和split方法时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312950/