java - 分割字符串时不带空格

标签 java regex string netbeans openvas

我有以下字符串,它是由外部程序(OpenVAS)生成的,并作为字符串成功返回到我的程序。

<create_target_response id="b4c8de55-94d8-4e08-b20e-955f97a714f1" status_text="OK, resource created" status="201"></create_target_response>

我正在尝试拆分字符串以给出“b4c8d....14f1”,而无需使用引号。我尝试了各种转义方法,并不断得到 else 方法“字符串不包含目标 ID”。我尝试删除检查字符串的 IF 语句,但仍然存在相同的问题。目标是将我的 id 字符串放入 jTextField6 中。 String Lob 包含上面的完整字符串。

     if (Lob.contains("id=\"")){
      // put the split here
           String[] parts = Lob.split("id=\"");
           String cut1 = parts[1];

           String[] part2 = cut1.split("\"");
           String TaskFinal = part2[0];

           jTextField6.setText(TaskFinal);

      }
       else {
           throw new IllegalArgumentException("String does not contain a Target ID");
       }

  } catch (IOException e) {
     e.printStackTrace();
  }

看来我只需要转义“而不是=(如果我这样做,Java会引发错误)

提前致谢

编辑:现在使用 jSoup lib 的代码 - “id”字符串不会显示。有任何想法吗? 谢谢

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
          String TargIP = jTextField1.getText(); // Get IP Address
          String TargName = jTextField5.getText(); // Get Target Name
          String Vag = "8d32ad99-ac84-4fdc-b196-2b379f861def";
          String Lob = "";

  final String dosCommand = "cmd /c omp -u admin -w admin --xml=\"<create_target><name>" + TargName + "</name><hosts>" + TargIP + "</hosts></create_target>\"";
  3</comment><config id='daba56c8-73ec-11df-a475-002264764cea'/><target id='" + Vag + "'/></create_task>\"";
  final String location = "C:\\";
  try {
     final Process process = Runtime.getRuntime().exec(
        dosCommand + " " + location);
     final InputStream in = process.getInputStream();
     int ch;
     while((ch = in.read()) != -1) {
        System.out.print((char)ch);
       Lob = String.valueOf((char)ch);
       jTextArea2.append(Lob);


     }

  } catch (IOException e) {
     e.printStackTrace();
  }
           String id = Jsoup.parse(Lob).getAllElements().attr("id");
     System.out.println(id); // This doesn't output? 
}

最佳答案

在"的基础上进行分割,可以得到所有的键值。

String str = "<create_target_response id=\"b4c8de55-94d8-4e08-b20e-955f97a714f1\" status_text=\"OK, resource created\" status=\"201\"></create_target_response>";
String[] tokens = str.split("\\\"");
System.out.println(tokens[1]);
System.out.println(tokens[5]);

输出:

b4c8de55-94d8-4e08-b20e-955f97a714f1
201

关于java - 分割字符串时不带空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21931880/

相关文章:

ios - 添加三个以逗号分隔的字符串和 "and"值添加

java - 声明对 tools.jar 的 maven 依赖以在 JDK 9 上工作

java - Selenium:连接被拒绝且未找到驱动程序

java - Maven:创建包含站点的分发程序集(多模块)

python - 正则表达式:用 "/"分割字符

java - 正则表达式在任何空格之前仅匹配一个字符一次

javascript - 如何使用 Javascript 修改节点的内容?

javascript - NodeJS 错误?执行在要返回的字符串之前有换行符的 return 语句时出错

php - 如何将 [link](#) 替换为 <a href ="#">link</a>?

java - GrizzlyWebServer + Spring + Jersey + 从 JAR 中提供静态内容