java - 在 Java 中使用 trim() 删除部分输出

标签 java bufferedreader trim

我编写了一些代码,将批处理文件输出输出到 jTextArea。目前,批处理文件输出计算机名称的 Activity 目录查询,但是还输出了一堆内容,我希望将其从变量 StringrimmedLine 的输出中删除。目前它仍在输出其他所有内容,我不知道如何只显示计算机名称。

输出:“CN=FDCD111304,OU=工作站,OU=SIM,OU=帐户,DC=FL,DC=NET”

我希望输出只显示以下内容:

FDCD111304

谁能告诉我如何修复我的代码,使其仅输出计算机名称而不输出其他内容? 查看控制台输出(忽略控制台输出中的顶行) Look at console output

    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/

相关文章:

java - HBase 中如何使用 Cell 的类型?

java - 从 JAVA 中第一行指定矩阵大小的文件中读取矩阵

Javascript trimAll() 似乎不起作用

java - 如何计算指数级数的百分比?

java - 如何从 Spock 规范类中提取 BDD 元语句

java - 扫描仪只能读取一半的数字。文件中的行数

java - FileNotFound 错误,但我的 txt 文件与 java 文件位于同一位置

sql-server - 在 MSSQL 中组合 LTRIM 和 RTIM 以及 REPLACE 函数

ios - 如何使用 AVAssetReader 和 AVAssetWriter 修剪视频

java - Skip_unusable_indexes (oracle) 的 Hibernate 等效项