我必须删除字符串的某些部分,例如:
customers/00000000-0000-0000-0000-000000000111/areas/00000000-0000-0000-0000-000000000222/orders/00000000-0000-0000-0000-000000000555/invoices/00000000-0000-0000-0000-000000000777/employees/00000000-0000-0000-0000-000000000213.gz
获取不带uuid但具有文件扩展名的路径。看起来应该像
customers/areas/orders/invoices/employees/.gz
我该怎么做?使用Matcher或子字符串?哪个是最佳选择?是否可以使用自定义正则表达式从字符串中删除UUID?
答案 0 :(得分:1)
您可以使用以下正则表达式替换字符串:
(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}
答案 1 :(得分:1)
假设您的UUID只是带负号的数字,则可以使用如下正则表达式
[0-9][-0-9]*[0-9][\/]?
替换类似的字符串
00000000-0000-0000-0000-000000000111/
00000000-0000-0000-0000-000000000222/
00000000-0000-0000-0000-000000000555/
00000000-0000-0000-0000-000000000213
...
带有空字符串,如以下代码所示:
String path = ...;
// Note the additional \ in the following string,
// this is necessary because we are using a string to represent the regexp
System.out.println(path.replaceAll("[0-9][-0-9]*[0-9][\\/]?", ""));
可打印
customers/areas/orders/invoices/employees/.gz
答案 2 :(得分:0)
您可以尝试 Apache Commons IO
中的 FilenameUtils.getExtension(您可以指定完整路径或仅指定文件名):
String ext1 = FilenameUtils.getExtension("customers/00000000-0000-0000-0000-000000000111/areas/00000000-0000-0000-0000-000000000222/orders/00000000-0000-0000-0000-000000000555/invoices/00000000-0000-0000-0000-000000000777/employees/00000000-0000-0000-0000-000000000213.gz"); // returns "gz"
String ext2 = FilenameUtils.getExtension("002345620000000213.txt"); // returns "txt"