我有一个字符串列表,我需要解析名称和版本,例如一些字符串看起来像这样:
应用程序名称1.2.5
AppName 7.8.b
应用程序名称7.0
我希望有两个字符串列表,其中一个带有应用程序名称,另一个带有版本号,因此一个列表是:
应用名称
AppName
应用名称
然后另一个列表将是
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);
...
}
Run Code Online (Sandbox Code Playgroud)
要了解正则表达式的工作原理,请查看以下内容:
^
Run Code Online (Sandbox Code Playgroud)
意味着在开始时开始匹配
(
Run Code Online (Sandbox Code Playgroud)
启动组1,它将保留版本名称
\\D*
Run Code Online (Sandbox Code Playgroud)
以任意数量的非数字开头
[^\\d\\s]
Run Code Online (Sandbox Code Playgroud)
以某种既不是数字也不是空间的东西结尾.
)
Run Code Online (Sandbox Code Playgroud)
第1组结束
\\s*
Run Code Online (Sandbox Code Playgroud)
可能与版本号分隔零个或多个空格.
(
第2组包含版本号.
\\d
Run Code Online (Sandbox Code Playgroud)
它以数字开头
.*
Run Code Online (Sandbox Code Playgroud)
并继续其余的输入.
)
Run Code Online (Sandbox Code Playgroud)
结束.
| 归档时间: |
|
| 查看次数: |
310 次 |
| 最近记录: |