java.lang.StringIndexOutOfBoundsException: String index out of range: -1
говорит нам, что есть ненулевая строка, которая не содержит искомого символа.
В вашем случае это может произойти, когда есть либо
(пробел), либо "
.
Воспроизведение с использованием Java выглядело бы так:
String test = "\"Other \n\nthings\"";
test = test.contains(" ") ? test.substring(0, test.indexOf(" ")) : test;
System.out.println(test); // "Other
System.out.println(test.contains("\"") ?
test.substring(test.indexOf("\"")+1,test.lastIndexOf("\"")) : "null"); // error!
Вы получаете сообщение об ошибке, потому что к моменту проведения второй проверки строка "Other
означает, что
test.contains("\"") ? test.substring(test.indexOf("\"")+1,test.lastIndexOf("\"")) : "null"
фактически разрешается до
test.contains ("\" ")? Test.substring (0 + 1, 0):" null "
И как указано в Javadoc
IndexOutOfBoundsException - если beginIndex отрицателен, или endIndex больше, чем длина этого объекта String, или beginIndex больше, чем endIndex.
В вашем случае beginIndex равен 1, а endIndex равен 0, поэтому выбрасывается StringIndexOutOfBoundsException
.
Чтобы исключить эту ошибку, вместо использования
row4.Ad_Set_Name.contains("\"")
использовать
row4.Ad_Set_Name.indexOf('"', 2) != -1
Это позволит убедиться, что в вашей строке есть как минимум 2 вхождения символа "
.