java - 将文件名分成组
问题描述
输入:
“MyPrefix_CH-DE_ProductName.pdf”
期望的输出:
["MyPrefix", "CH", "DE", "ProductName"]
CH
是一个国家代码,它应该来自一个预定义的列表,例如。["CH", "IT", "FR", "GB"]
编辑:前缀也可以包含 _ 和 - 但不能包含 CH 或 DE。
DE
是一个语言代码,它应该来自一个预定义的列表,例如。["EN", "IT", "FR", "DE"]
我怎么做?
我在这里寻找基于正则表达式的解决方案。
解决方案
我假设扩展名始终是 pdf
String str = "MyPref_ix__CH-DE_ProductName.pdf";
String regex = "(.*)_(CH|IT|FR|GB)-(EN|IT|FR|DE)_(.*)\\.pdf";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
String[] res = new String[4];
if(matcher.matches()) {
res[0] = matcher.group(1);
res[1] = matcher.group(2);
res[2] = matcher.group(3);
res[3] = matcher.group(4);
}
推荐阅读
- json - 什么规则决定了 JSON 中的转义
- android - 应用程序关闭后,由 android webview 中的网页创建的 cookie 将被删除
- c++ - C++ compile-time substring
- django - 当 Django REST 框架中不存在时,UpdateAPIView 不会引发 404
- javascript - req.user 未定义,但登录工作正常
- c++11 - 如何正确使用 std::bind 与 std::unique_ptr
- node.js - 通过 Azure DevOps 32 位问题部署 NodeJS 应用程序
- php - 如何从php字符串中提取某些单词?
- flutter - 如何在导航到页面时触发 DropDownMenu?
- javascript - 为什么没有发送到谷歌火力基地?