Получить конкретный элемент в JAVA String[]

Я хочу получить конкретный элемент с именем Что-то в строке внутри String[] для JAVA.

Мой код =

String sentence = "AP=Something+example|AS=Explanation";
String[] word = sentence.split("\\|");
for (String w: word){
   System.out.println(w);
}

Мой текущий вывод:

AP=Something+example
AS=Explanation

Мой ожидаемый результат должен быть:

Something // the other information I dont want to take. Is there a better and faster way and not too time consuming? 

заранее спасибо

Почему бы тебе просто split("+")?

RaminS 15.03.2019 02:26

О да, позвольте мне попробовать.

kingkongman oftheworldinchaos 15.03.2019 02:26

Нет, я получил ошибки Исключение в потоке "main" java.util.regex.PatternSyntaxException: висячий метасимвол '+' рядом с индексом 0 + ^

kingkongman oftheworldinchaos 15.03.2019 02:28

А точнее String word = sentence.substring(sentence.indexOf('S'), sentence.indexOf('+'));

RaminS 15.03.2019 02:28

Но ваш вышеприведенный метод работает только тогда, когда indexOf содержит «S», верно? Что, если мое «Что-то» продолжает меняться, и не всегда как «Что-то», а как «Другое»?

kingkongman oftheworldinchaos 15.03.2019 02:30

Запутался - зачем разбивать на трубу, если хочешь разойтись на +? Также следует экранировать согласно |

Scary Wombat 15.03.2019 02:30

Я получил ошибки при разделении на +. поэтому. Я написал ошибку в комментарии

kingkongman oftheworldinchaos 15.03.2019 02:32

Я решил ошибки. Могу ли я узнать, как получить подстроку после AP?

kingkongman oftheworldinchaos 15.03.2019 02:32

Затем нужно указать правила. Если вы имеете в виду «между = и +», измените sentence.indexOf('S') на sentence.indexOf('=')+1.

RaminS 15.03.2019 02:33

Да, но вы сделали двойную обратную косую черту? sentence.split("\\+")

Scary Wombat 15.03.2019 02:34

Это сработало! Я буду читать об этих функциях. Кое-что узнал спасибо!

kingkongman oftheworldinchaos 15.03.2019 02:36

Вот документация по используемым методам: String#substring(int, int) и String#indexOf(char).

RaminS 15.03.2019 02:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
12
42
2

Ответы 2

Если вы хотите разделить трубу плюс нет, измените

String[] word = sentence.split("\\|");

к

String[] word = sentence.split("\\+");

Видимо, он тоже хочет избавиться от "AP = ". Так что это будет что-то вроде String word = sentence.split("\\+")[0].split(" = ")[1];.

RaminS 15.03.2019 02:40

@Жандарм Спасибо. Видимо я не понял, что он хотел.

Scary Wombat 15.03.2019 02:45

Уценка на SO несколько сбивает с толку, поскольку OP не заключает вывод в кавычки.

RaminS 15.03.2019 02:46

Я не понимаю, чего вы на самом деле хотите, но:

        String sentence = "AP=Something+example|AS=Explanation";
        String[] recs = sentence.split("\\|");
        HashMap<String, String> h = new HashMap<String,String>();
        for (String r : recs) {
            String[] vals = r.split(" = ");
            h.put(vals[0], vals[1]);
        }
        System.out.println(h.get("AP").split("\\+")[0]);

Этот код настолько плох, но посмотрите на общую идею.

Мой английский тоже так плох.

Другие вопросы по теме