string操作,从同一行拉取某些值

我想知道是否有办法做这样的事情:

Excel工作表/ csv文件有一个单元格,其中包含的数据看起来像 –

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

User: Josh - String 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 - String 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"

(CN之间有空格,权限1个单元格包含用户名,1个单元格包含权限)

最终的打印应该如下所示:

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

pipe理员和域用户都是我想要拉出的单元格。 现在,有多个不同的单元可能包含超过1-5个不同的CN,例如用户Josh和Mary。

总之,我不太确定如何操作javastring来提取只能pipe理员和域(以及后续以" "CN=开头的权利),可以循环访问每个单元格。 一些可以search任何以“CN =”开头的值的string,然后循环查找以" "CN=开头的部分。

基于单元格中的信息。 请让我知道这是否需要重新措词,因为这很难用文字描述。

你正在寻找的是indexOf函数:

 String 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 

更多的例子在这里: http : //codingbat.com/doc/java-string-indexof-parsing.html

如果你没有关于用户的信息,你必须先准备好。 既然你有它在一个string中,你可以通过这种方法search它。 你需要得到开始和结束索引。 比你只使用str.substring准备你打印输出的string。 http://www.w3schools.com/jsref/jsref_substring.asp

如何获得下一个索引是: 如何返回之前的下一个indexOf?

有多种方法可以解决这个问题。

但最天真的是循环一次input,并提取CN =之后的内容,直到“,”或“\”。

这里是代码:

 public class Test { public static void main(String[] args) { String user1 = "User: Bob - String x = \"CN=Administrators,CN=xxx,DC=xxx,DC=xxx,CN=AHmed\" \"CN=Domain Users,OU=xxx,DC=xxx,DC=xxx,DC=xxx\""; String user2 = "User: Josh - String 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\""; String user3 = "User: Mary - String 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<String> getCNs(String s) { char[] arr = s.toCharArray(); ArrayList<String> list = new ArrayList<>(); String 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; } }