将txt文件的一部分分配给java变量
我有一个txt文件,输出如下:将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"))) {
"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(“,”)。我也写错了我的代码,现在就编辑它。请再检查一遍。