tox1cozZ
aka Agravaine
- 8,455
- 598
- 2,892
Понадобилось реализовать алгоритм со строками как в плагинах на пермишаны.
То есть возможность добавлять и исключать строки, ну и конечно же чтобы работала звездочка(string.* например).
Их тонна разных, но там столько абстракций и левого кода, что нужно куска так и не смог найти...
Накидал такое чудо, вроде работает, но что-то мне не очень нравится код:
То есть возможность добавлять и исключать строки, ну и конечно же чтобы работала звездочка(string.* например).
Их тонна разных, но там столько абстракций и левого кода, что нужно куска так и не смог найти...
Накидал такое чудо, вроде работает, но что-то мне не очень нравится код:
Java:
private final Set<String> strings = Sets.newTreeSet();
private final Set<String> blockedStrings = Sets.newTreeSet();
public boolean has(String input){
boolean has = false;
for(String str : strings){
if(str.endsWith("*")){
str = str.substring(0, str.length() - 1);
if(input.startsWith(str)){
has = true;
break;
}
}else{
if(input.equals(str)){
has = true;
break;
}
}
}
if(has){
for(String str : blockedStrings){
if(str.endsWith("*")){
str = str.substring(0, str.length() - 1);
if(input.startsWith(str) && !strings.contains(input)){
return false;
}
}else{
if(input.equals(str)){
return false;
}
}
}
}
return has;
}