Manipulation des cordes, tirant certaines valeurs de la même ligne

Je me demandais s'il y avait une façon de faire quelque chose comme ça:

Un file excel sheet / csv possède une seule cellule qui comprend des données qui ressemblent –

User: Bob - Ssortingng x = "CN=Administrators,CN=xxx,DC=xxx,DC=xxx,DC=xxx" "CN=Domain Users,OU=xxx,DC=xxx,DC=xxx,DC=xxx"

User: Josh - Ssortingng y = ["CN=Domain Users,CN=xxx,DC=xxx,DC=xxx,DC=xxx" "CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx" "CN=Temp,CN=xxx,DC=xxx,DC=xxx,DC=xxx" "CN=Full Time,CN=xxx,DC=xxx,DC=xxx,DC=xxx"

User: Mary - Ssortingng z = "CN=Administrators,CN=xxx,DC=xxx,DC=xxx,DC=xxx" "CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx" "CN=Temp,OU=xxx,DC=xxx,DC=xxx,DC=xxx"

(il y a des espaces entre le CN, les droits. 1 cellule contient le nom des users, 1 cellule contient les droits)

L'printing finale devrait ressembler à:

User: Bob Entitlement: Administrator, Domain User User: Josh Entitlement: Domain User, Local, Temp, Full Time User: Mary Entitlement: Administrator, Local, Temp

Les administrateurs et les users du domaine sont à la fois ce que je veux retirer de la cellule. Maintenant, il existe plusieurs cellules différentes qui peuvent contenir plus de 1-5 CN différents, par exemple les Utilisateurs Josh et Mary.

En bref, je ne suis pas trop sûr de savoir comment manipuler la string java pour retirer uniquement l'Administrateur et le Domaine (et les droits suivants commençant par " "CN= ) qui peuvent être boukeys pour bash chaque cellule. Quelque chose qui pourrait searchr la string pour toutes les valeurs qui commencent par "CN =" puis faites une boucle dans la string pour find des pièces qui commencent par " "CN= .

en fonction des informations contenues dans la cellule. Permettez-moi de savoir si cela nécessite une reformulation, car il est difficile de le décrire dans le text.

Ce que vous searchz est la fonction indexOf:

 Ssortingng str = "Here there everywhere"; int a = str.indexOf("there"); // a is 5 int b = str.indexOf("er"); // b is 1 int c = str.indexOf("eR"); // c is -1, "eR" is not found 

Plus d'exemples ici: http://codingbat.com/doc/java-ssortingng-indexof-parsing.html

Si vous n'avez pas d'informations sur l'user sur une seule ligne, vous devez d'abord la préparer. Puisque vous l'avez obtenu dans une string et vous pouvez la searchr par cette méthode. Vous devez get l'index de début et de fin. Que vous utilisez simplement str.subssortingng pour préparer des strings à partir desquelles vous ferez votre printing. http://www.w3schools.com/jsref/jsref_subssortingng.asp

Comment get le prochain index est ici: Comment returnner le prochain indexOf après un précédent?

Il existe plusieurs façons d'aborder cela.

Mais le plus naïf est de boucler une fois par l'input et d'extraire ce qui est après CN = jusqu'à ',' ou '\ "'.

Voici le code:

 public class Test { public static void main(Ssortingng[] args) { Ssortingng user1 = "User: Bob - Ssortingng x = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,CN=AHmed\" \"CN=Domain Users,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; Ssortingng user2 = "User: Josh - Ssortingng y = [\"CN=Domain Users,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Temp,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Full Time,CN=xxx,DC=xxx,DC=xxx,DC=xxx\""; Ssortingng user3 = "User: Mary - Ssortingng z = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Temp,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; System.out.println(user1.split("-")[0]+"Entitlement "+getCNs(user1)); //Outputs User: Bob Entitlement [Administrators, xxx, AHmed, Domain Users] System.out.println(user2.split("-")[0]+"Entitlement "+getCNs(user2)); //Outputs User: Josh Entitlement [Domain Users, xxx, Local, Temp, xxx, Full Time, xxx] System.out.println(user3.split("-")[0]+"Entitlement "+getCNs(user3)); //Outputs User: Mary Entitlement [Administrators, xxx, Local, Temp] } public static ArrayList<Ssortingng> getCNs(Ssortingng s) { char[] arr = s.toCharArray(); ArrayList<Ssortingng> list = new ArrayList<>(); Ssortingng temp = ""; for (int i = 2; i < arr.length ; i++) { if(arr[i]=='=' && arr[i-1]=='N' && arr[i-2]=='C'){ //we found CN= i++; while(i<s.length()){ temp+=arr[i]; i++; if(arr[i]==',' ||arr[i]=='\"' ){ list.add(temp); temp = ""; break; } } } } return list; } } i ++; public class Test { public static void main(Ssortingng[] args) { Ssortingng user1 = "User: Bob - Ssortingng x = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,CN=AHmed\" \"CN=Domain Users,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; Ssortingng user2 = "User: Josh - Ssortingng y = [\"CN=Domain Users,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Temp,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Full Time,CN=xxx,DC=xxx,DC=xxx,DC=xxx\""; Ssortingng user3 = "User: Mary - Ssortingng z = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Temp,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; System.out.println(user1.split("-")[0]+"Entitlement "+getCNs(user1)); //Outputs User: Bob Entitlement [Administrators, xxx, AHmed, Domain Users] System.out.println(user2.split("-")[0]+"Entitlement "+getCNs(user2)); //Outputs User: Josh Entitlement [Domain Users, xxx, Local, Temp, xxx, Full Time, xxx] System.out.println(user3.split("-")[0]+"Entitlement "+getCNs(user3)); //Outputs User: Mary Entitlement [Administrators, xxx, Local, Temp] } public static ArrayList<Ssortingng> getCNs(Ssortingng s) { char[] arr = s.toCharArray(); ArrayList<Ssortingng> list = new ArrayList<>(); Ssortingng temp = ""; for (int i = 2; i < arr.length ; i++) { if(arr[i]=='=' && arr[i-1]=='N' && arr[i-2]=='C'){ //we found CN= i++; while(i<s.length()){ temp+=arr[i]; i++; if(arr[i]==',' ||arr[i]=='\"' ){ list.add(temp); temp = ""; break; } } } } return list; } } i ++; public class Test { public static void main(Ssortingng[] args) { Ssortingng user1 = "User: Bob - Ssortingng x = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,CN=AHmed\" \"CN=Domain Users,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; Ssortingng user2 = "User: Josh - Ssortingng y = [\"CN=Domain Users,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Temp,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Full Time,CN=xxx,DC=xxx,DC=xxx,DC=xxx\""; Ssortingng user3 = "User: Mary - Ssortingng z = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Local,OU=xxx,DC=xxx,DC=xxx,DC=xxx\" \"CN=Temp,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; System.out.println(user1.split("-")[0]+"Entitlement "+getCNs(user1)); //Outputs User: Bob Entitlement [Administrators, xxx, AHmed, Domain Users] System.out.println(user2.split("-")[0]+"Entitlement "+getCNs(user2)); //Outputs User: Josh Entitlement [Domain Users, xxx, Local, Temp, xxx, Full Time, xxx] System.out.println(user3.split("-")[0]+"Entitlement "+getCNs(user3)); //Outputs User: Mary Entitlement [Administrators, xxx, Local, Temp] } public static ArrayList<Ssortingng> getCNs(Ssortingng s) { char[] arr = s.toCharArray(); ArrayList<Ssortingng> list = new ArrayList<>(); Ssortingng temp = ""; for (int i = 2; i < arr.length ; i++) { if(arr[i]=='=' && arr[i-1]=='N' && arr[i-2]=='C'){ //we found CN= i++; while(i<s.length()){ temp+=arr[i]; i++; if(arr[i]==',' ||arr[i]=='\"' ){ list.add(temp); temp = ""; break; } } } } return list; } }