Подстрока(int,int) в java для рассмотрения строки

#java #string #global-variables #indexof #substr

Вопрос:

Я,возможно, нахожу сложный способ обойти это, но вот как это происходит: Получена строка, сохраненная в глобальной переменной: Например: Это результат строки JSON после чтения вызова REST API, сохраненного в глобальной переменной: String Str= [«[«b8f400be-b823-49c6-b0dd-5c97dc5d45e4″]»]

Теперь мне нужно разделить строку в»», и вывод должен быть только b8f400be-b823-49c6-b0dd-5c97dc5d45e4

Я использовал подстроку,indexOf,lastIndexOf, но в любом случае не смог получить четкого рабочего решения.Что я здесь упускаю?

 str.substring(5, str.indexOf(""", str.indexOf(""")   1))
 str.substring(5, str.substring.lastIndexOf(""")-4);
 

Натыкаясь на ошибки с обратными косыми чертами и двойными кавычками,поэтому использовал " метод для извлечения результата, но все равно не работает.

Поскольку параметры подстроки принимают только (int,int), я не могу предоставить строку для извлечения, любая помощь будет очень признательна

Комментарии:

1. Что str на самом деле содержит переменная?

2. Я мог бы просто дать вам рабочий код, или я мог бы помочь вам найти то, что вам нужно , чтобы помочь себе. В вашем наборе инструментов есть нечто большее, чем просто молоток. Если молоток не справится с работой, возьмите другой инструмент. Я бы предложил изучить lastIndexOf второй аргумент, чтобы substring . Обратите внимание, что вы можете искать последовательности строк, а не просто символ или строку из одного символа. Существует множество других строковых методов, которые могут помочь вам выполнить вашу задачу различными способами.

3. @Без потерь str содержит [«[«b8f400be-b823-49c6-b0dd-5c97dc5d45e4″]»]

4. @MarsAtomic я рискнул использовать все строковые методы,такие как подстрока ,lastIndexOf,поиск, но ни один из них не выполнил свою работу, и я постоянно получаю ошибку как: Исключение за пределами, за пределами диапазона -1

Ответ №1:

Вы добавляете лишнюю ненужную логику. Это просто

str.substring(5, str.lastIndexOf(""")-3); или даже

str.substring(5, str.lastIndexOf("\"));

Кроме того, вот как вы правильно назначаете/публикуете строковую переменную — String str = "["["b8f400be-b823-49c6-b0dd-5c97dc5d45e4"]"]"

По крайней мере, это то, что я предполагаю, основываясь на том, что вы используете 5 в качестве первого индекса вашей подстроки. Изначально я думал String str = "["b8f400be-b823-49c6-b0dd-5c97dc5d45e4"]" , что вы имели в виду то, что опубликовали, — это массив, содержащий одно строковое значение.