#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"]"
, что вы имели в виду то, что опубликовали, — это массив, содержащий одно строковое значение.