Вы можете использовать CompoundName из jndi
Name dn = parser.parse("CN=x,OU=y,O=z,ST=v,C=COM");
dn.get(dn.size());
Для примера взгляните на эту ссылку
Редактировать: Добавлен рабочий пример
public static void main(String args[]){
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://localhost:389");
Context ctx = new InitialContext(env);
NameParser parser = ctx.getNameParser("");
Name dn = parser.parse("CN=x,OU=y,O=z,ST=v,C=COM");
System.out.println(dn.size() + dn.get( dn.size() -1 ));
}catch(NamingException e) {
e.printStackTrace();
}
}
Чтобы создать контекст, вам необходимо подключиться к ldap-серверу.Легко сделать разбор строки и получить первое число.Но не попасть туда!У DN есть разные форматы.В формате DCE dn будет разделен как CN = x / OU = y / O = z / ST = v / C = COM
РЕДАКТИРОВАТЬ: добавлен другой пример без подключения к серверу ldap
import javax.naming.ldap.LdapName;
....
public static void main(String args[]){
try {
LdapName dn = new LdapName("CN=x,OU=y,O=z,ST=v,C=COM");
System.out.println(dn.get(dn.size() - 1));
}catch (InvalidNameException e) {
System.out.println(e.getMessage());
}
}