我编写了一些代码,将批处理文件输出输出到 jTextArea。目前,批处理文件输出计算机名称的 Activity 目录查询,但是还输出了一堆内容,我希望将其从变量 StringrimmedLine 的输出中删除。目前它仍在输出其他所有内容,我不知道如何只显示计算机名称。
输出:“CN=FDCD111304,OU=工作站,OU=SIM,OU=帐户,DC=FL,DC=NET”
我希望输出只显示以下内容:
FDCD111304
谁能告诉我如何修复我的代码,使其仅输出计算机名称而不输出其他内容? 查看控制台输出(忽略控制台输出中的顶行)
btnPingComputer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String line;
BufferedWriter bw = null;
BufferedWriter writer =null;
try {
writer = new BufferedWriter(new FileWriter(tempFile));
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
String lineToRemove = "OU=Workstations";
String s = null;
Process p = null;
try {
p = Runtime.getRuntime().exec("c:\\computerQuery.bat");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringBuffer sbuffer = new StringBuffer(); // new trial
BufferedReader in = new BufferedReader(new InputStreamReader(p
.getInputStream()));
try {
while ((line = in.readLine()) != null) {
System.out.println(line);
textArea.append(line);
textArea.append(String.format(" %s%n", line));
sbuffer.append(line + "\n");
s = sbuffer.toString();
String trimmedLine = line.trim();
if(trimmedLine.equals(lineToRemove)) continue;
writer.write(line + System.getProperty("line.separator"));
}
fw.write("commandResult is " + s);
String input = "CN=FDCD511304,OU=Workstations,OU=SIM,OU=Accounts,DC=FL,DC=NET";
Pattern pattern = Pattern.compile("(.*?)\\=(.*?)\\,");
Matcher m = pattern.matcher(input);
while(m.find()) {
String currentVar = m.group().substring(3, m.group().length() - 1);
System.out.println(currentVar); //store or do whatever you want
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally
{
try {
fw.close();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
最佳答案
在处理专有名称时,您还可以使用javax.naming.ldap.LdapName
。它还可以处理转义,这对于单独使用正则表达式来说很棘手(即 cn=foo\,bar,dc=fl,dc=net 是一个完全有效的 DN)
String dn = "CN=FDCD111304,OU=Workstations,OU=SIM,OU=Accounts,DC=FL,DC=NET";
LdapName ldapName = new LdapName(dn);
String commonName = (String) ldapName.getRdn(ldapName.size() - 1).getValue();
关于java - 在 Java 中使用 trim() 删除部分输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30744503/