Как использовать двойные кавычки + подстрока - PullRequest
0 голосов
/ 20 марта 2020

У меня маленькая проблема. Я анализирую файл XML в строку и в строке должен искать фразу id="t2", ниже я использую subString - indexOf, но когда я использую двойные кавычки на "<text id=\"t2\" ", программа выдает исключение, и когда я использовать простые кавычки "<text id=t2 " - выбросить исключение, потому что фраза не существует

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin -1, end 16319, length 21524 at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319) at java.base/java.lang.String.substring(String.java:1874) at Parser.Test.main(Test.java:36)

Это мой код:

    DocumentBuilderFactory domFact = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = domFact.newDocumentBuilder();
    Document doc = builder.parse(args[0]);
    DOMSource domSource = new DOMSource(doc);
    StringWriter writer = new StringWriter();
    StreamResult result = new StreamResult(writer);
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer transformer = tf.newTransformer();
    transformer.transform(domSource, result);
    //System.out.println("XML IN String format is: \n" + writer.toString());
    String test = writer.toString();

    //String b = "<alt-trans id=\"t2\" ";

    String a = writer.toString().substring(writer.toString().indexOf("<alt-trans id=\"t2\" "), 
    writer.toString().indexOf("</alt-trans>"));

    System.out.println(a);

В конечном результате пользователь должен будет ввести идентификатор, как это

String variable = scan.next(); e.g. my variable = t4

В программе: "<alt-trans id=\"variable\" "

Я не знаю, как я могу это сделать, кто-нибудь помочь

...