Извлечь значение из сообщения JMSByte - PullRequest
0 голосов
/ 22 февраля 2019

Привет, у меня есть потребитель, подписавшийся на тему и получающий байтовое сообщение.

Задача, которую я хочу выполнить, - извлечь значение из приведенной ниже строки, которую я преобразовал.

Код iиспользуется для преобразования байтового сообщения ниже:

if (message instanceof BytesMessage){
            BytesMessage byteMessage = (BytesMessage) message;
            byte[] byteData = null;
            try {
                byteData = new byte[(int) byteMessage.getBodyLength()];
                byteMessage.readBytes(byteData);
                byteMessage.reset();
            }catch (JMSException e){
                e.printStackTrace();
            }
            String stringMessage =  new String(byteData);
            System.out.println(stringMessage);
        }

СтрокаСообщение нам показывают, как показано ниже:

2179032 TradeId701118403 clearedTradeUsi SW005285900447503296 # clearedTradeUsiIssuer 1010051�zzz�cleared���i*

Я хочу извлечь каждое значение отдельно, как показано ниже.Но сейчас я понятия не имею, как это сделать .. Может ли кто-нибудь помочь мне с этим?

TradeId: 70111840

clearedTradeUsi: SW005285900447503296

clearedTradeUsiIssuer: 1010051

1 Ответ

0 голосов
/ 22 февраля 2019

Поскольку вы пометили свой вопрос с помощью регулярных выражений, я предоставлю некоторые решения регулярных выражений для поиска полей.

Для идентификатора сделки

    TradeId\s?(\d+)

Это позволит выделить место длябыть добавлен перед идентификатором, как есть для некоторых других значений.\ S?не соответствует ни одному или одному пробелу.

Для clearedTradeUsi

clearedTradeUsi\s?(\w+)

Для clearedTradeUsiIssuer

clearedTradeUsiIssuer\s?(\d+)

Каждое из этих регулярных выражений будет соответствовать соответствующему идентификатору, который будет помещенв группу 1.

...