将txt文件的一部分分配给java变量

将txt文件的一部分分配给java变量,java,bufferedreader,Java,Bufferedreader,我有一个txt文件,输出如下: "CN=COUD111255,OU=Workstations,OU=Mis,OU=Accounts,DC=FLHOSP,DC=NET" 我要做的是读取Coud11255部分并将其分配给java变量。我将ldap分配给了sCurrentLine,但得到了一个空点异常。任何建议 try (BufferedReader br = new BufferedReader(new FileReader("resultofbatch.txt"))) {

我有一个txt文件,输出如下:

"CN=COUD111255,OU=Workstations,OU=Mis,OU=Accounts,DC=FLHOSP,DC=NET"
我要做的是读取Coud11255部分并将其分配给java变量。我将ldap分配给了sCurrentLine,但得到了一个空点异常。任何建议

try (BufferedReader br = new BufferedReader(new FileReader("resultofbatch.txt")))
            {


                final Pattern PATTERN = Pattern.compile("CN=([^,]+).*");
                try {
                    while ((sCurrentLine = br.readLine()) != null) {
                        //Write the function you want to do, here.
                        String[] tokens = PATTERN.split(","); //This will return you a array, containing the string array splitted by what you write inside it.
                        //should be in your case the split, since they are seperated by ","

                    }
                     System.out.println(sCurrentLine);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                } catch (IOException e2) {
                    // TODO Auto-generated catch block
                    e2.printStackTrace();
                }

        }
    });

您只需逐行读取文件中的数据,并将该行指定给变量str。请参阅以下链接:
要从.txt读取,请使用BufferedReader。要创建一个,请编写:

BufferedReader br = new BufferedReader(new FileReader("testing.txt"));
testing.txt是您正在读取的txt的名称,必须在java文件中。初始化后,您必须继续执行以下操作:

while ((CurrentLine = br.readLine()) != null) {
                //Write the function you want to do, here.
                String[] tokens = CurrentLine.split(","); //This will return you a array, containing the string array splitted by what you write inside it.
                //should be in your case the split, since they are seperated by ","
            }
您得到的令牌数组是=[CN=coud11255,OU=Workstations,OU=Mis,OU=Accounts,DC=FLHOSP,DC=NET]。 现在,取数组的第0个元素并使用它。你现在拿到CN=coud11255了!离开这里不是为了给出完整的代码


希望有帮助

您的代码几乎是正确的。您正在将此字符串写入标准输出-用于什么?如果我理解正确,您需要的只是:

private static final Pattern PATTERN = Pattern.compile("CN=([^,]+).*");

public static String solve(String str) {
    Matcher matcher = PATTERN.matcher(str);
    if (matcher.matches()) {
        return matcher.group(1);
    } else {
        throw new IllegalArgumentException("Wrong string " + str);
    }
}
这个电话

solve("CN=COUD111255,OU=Workstations,OU=Mis,OU=Accounts,DC=FLHOSP,DC=NET")

给了我“COUD111255”作为答案。

或者,如果您的文件只包含一行,请使用并从返回的列表中获取第一行。这看起来像LDAP可分辨名称(DN)。使用像SpringLDAP这样的LDAP/LDIF库来解析DN并提取CN组件。可能与上面我更新的代码重复。我尝试使用LDAP,但我不确定应该为变量分配什么。我尝试分配ldapName=newldapname(sCurrentLine);但我得到了一个空指针异常。任何建议。使用
javax.naming.ldap.LdapName
正确解析ldap。我试图从txt文件而不是硬编码字符串中提取(“CN=coud11255,OU=Workstations,OU=Mis,OU=Accounts,DC=FLHOSP,DC=NET”)。从txt文件中获取它是我的问题,因为Kutay Demireren已经回答了您-您需要的是BufferedReader和readLine方法-它一次返回一个字符串。当文件完成(EOF)时,它返回null。据我所知,您有一个包含很多行的大型文件,您可能可以从所有行中收集CNs列表。我尝试使用您的代码,但得到的输出为“null”。我觉得我真的很接近,但我不确定我错过了什么。我更新了上面的代码。首先,检查你是否得到了我们想要的数组。如果您正在获取,则获取第一个元素并从字符串中删除CN=。如果你没有得到我们想要的数组,你能调试一下并告诉我当前的令牌数组是什么吗?我刚刚意识到你最好对CurrentLine使用split方法,CurrentLine本身就是这个数组。因此,将其用作CurrentLine.split(“,”)。我也写错了我的代码,现在就编辑它。请再检查一遍。