Java 如何拆分字符串将字符串拆分两次

Java 如何拆分字符串将字符串拆分两次,java,arrays,string,split,Java,Arrays,String,Split,我正试着把一根绳子劈开两次 String example = response; String [] array = example.split("<section>"); System.out.println(array[0]); String [] array2 = example.split("<title>"); System.out.println(array2[2]); 字符串示例=响应; 字符串[]数组=example.s

我正试着把一根绳子劈开两次

String example = response;
    String [] array = example.split("<section>");
    System.out.println(array[0]);

    String [] array2 = example.split("<title>");
    System.out.println(array2[2]);
字符串示例=响应;
字符串[]数组=example.split(“”);
System.out.println(数组[0]);
String[]array2=example.split(“”);
System.out.println(array2[2]);

我试图通过使用这段代码来实现这一点(没有成功),但是我不想打印第一次分割,而是想保存它并继续第二次分割。有谁能找到解决这个问题的办法或者更好的方法来把一个字符串拆分两次呢?谢谢

我真的认为你不想在这里使用拆分。我想你应该用像这样的东西

// Extract a given tag value from an input txt.
public static String extractTagValue(String txt,
    String tag) {
  if (tag == null || txt == null) {
    return "";
  }
  String lcText = txt.toLowerCase();
  tag = tag.trim().toLowerCase();
  String openTag = "<" + tag + ">";
  String closeTag = "</" + tag + ">";
  int pos1 = lcText.indexOf(openTag);
  if (pos1 > -1) {
    pos1 += openTag.length();
    int pos2 = lcText.indexOf(closeTag, pos1 + 1);
    if (pos2 > -1) {
      return txt.substring(pos1, pos2);
    }
  }
  return "";
}

public static void main(String[] args) {
  String example = "<title>Hello</title><section>World</SECTION>";
  String section = extractTagValue(example,
      "section");
  String title = extractTagValue(example, "title");

  System.out.printf("%s, %s\n", title, section);
}

这似乎有很多。。。但您确实应该使用DOM解析器来处理XML:

import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;

public class ExtractXML {
    public static void main(String argv[]) {
        DocumentBuilderFactory docBuilderFactory = null;
        DocumentBuilder docBuilder = null;
        Document doc = null;
        String rawStr = "Response: <section><title>Input interpretation</title>"
                + "<sectioncontents>Ireland</sectioncontents></section>"
                + "<section><title>Result</title>"
                + "<sectioncontents>Michael D. Higgins</sectioncontents></section>";
        String docStr = rawStr.substring(rawStr.indexOf('<'));
        String answer = "";

        try {
            docBuilderFactory = DocumentBuilderFactory.newInstance();
            docBuilder = docBuilderFactory.newDocumentBuilder();
            doc = docBuilder.parse(new InputSource(new StringReader(docStr)));
        } catch (SAXParseException e) {
            System.out.println("Doc missing root node, adding and trying again...");
            docStr = String.format("<root>%s</root>", docStr);

            try {
                doc = docBuilder.parse(new InputSource(new StringReader(docStr)));
            } catch (Exception e1) {
                System.out.printf("Malformed XML: %s\n", e1.getMessage());
                System.exit(0);
            }
        } catch (Exception e) {
            System.out.printf("Something went wrong: %s\n", e.getMessage());
        } finally {
            try {
                // Normalize text representation:
                doc.getDocumentElement().normalize();

                NodeList titles = doc.getElementsByTagName("title");

                for (int tIndex = 0; tIndex < titles.getLength(); tIndex++) {
                    Node node = titles.item(tIndex);

                    if (node.getTextContent().equals("Result")) {
                        Node parent = node.getParentNode();
                        NodeList children = parent.getChildNodes();

                        for (int cIndex = 0; cIndex < children.getLength(); cIndex++) {
                            Node child = children.item(cIndex);
                            if (child.getNodeName() == "sectioncontents") {
                                answer = child.getTextContent();
                            }
                        }
                    }
                }

                System.out.printf("Answer: %s\n", answer);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

请给我一个输入/输出示例?
String[]onlyOnArray=example.split(“()|()”)
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;

public class ExtractXML {
    public static void main(String argv[]) {
        DocumentBuilderFactory docBuilderFactory = null;
        DocumentBuilder docBuilder = null;
        Document doc = null;
        String rawStr = "Response: <section><title>Input interpretation</title>"
                + "<sectioncontents>Ireland</sectioncontents></section>"
                + "<section><title>Result</title>"
                + "<sectioncontents>Michael D. Higgins</sectioncontents></section>";
        String docStr = rawStr.substring(rawStr.indexOf('<'));
        String answer = "";

        try {
            docBuilderFactory = DocumentBuilderFactory.newInstance();
            docBuilder = docBuilderFactory.newDocumentBuilder();
            doc = docBuilder.parse(new InputSource(new StringReader(docStr)));
        } catch (SAXParseException e) {
            System.out.println("Doc missing root node, adding and trying again...");
            docStr = String.format("<root>%s</root>", docStr);

            try {
                doc = docBuilder.parse(new InputSource(new StringReader(docStr)));
            } catch (Exception e1) {
                System.out.printf("Malformed XML: %s\n", e1.getMessage());
                System.exit(0);
            }
        } catch (Exception e) {
            System.out.printf("Something went wrong: %s\n", e.getMessage());
        } finally {
            try {
                // Normalize text representation:
                doc.getDocumentElement().normalize();

                NodeList titles = doc.getElementsByTagName("title");

                for (int tIndex = 0; tIndex < titles.getLength(); tIndex++) {
                    Node node = titles.item(tIndex);

                    if (node.getTextContent().equals("Result")) {
                        Node parent = node.getParentNode();
                        NodeList children = parent.getChildNodes();

                        for (int cIndex = 0; cIndex < children.getLength(); cIndex++) {
                            Node child = children.item(cIndex);
                            if (child.getNodeName() == "sectioncontents") {
                                answer = child.getTextContent();
                            }
                        }
                    }
                }

                System.out.printf("Answer: %s\n", answer);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}
[Fatal Error] :1:98: The markup in the document following the root element must be well-formed.
Doc missing root node, adding and trying again...
Answer: Michael D. Higgins