从JMSByte消息中提取值

时间:2019-02-22 16:24:45

标签: arrays regex activemq jms-topic

嗨,我有一个用户订阅一个主题并接收字节消息。

我要完成的任务是从转换后的字符串下面提取值。

我用来转换字节消息的代码如下:

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);
        }

stringMessage我们显示如下:

  

2179032 TradeId701118403 clearedTradeUsi   SW005285900447503296#已清除TradeUsiIssuer   1010051.zzz.cleared.i

我想分别提取每个值,如下所示。但是现在我还不知道该怎么做。任何人都可以帮我吗?

TradeId:70111840

clearedTradeUsi:SW005285900447503296

clearedTradeUsiIssuer:1010051

1 个答案:

答案 0 :(得分:0)

当您用正则表达式标记问题时,我将提供一些正则表达式解决方案来查找字段。

获取交易ID

    TradeId\s?(\d+)

这将允许在id之前添加一个空格,就像其他一些值一样。 \ s?不匹配一个空格。

对于clearedTradeUsi

clearedTradeUsi\s?(\w+)

对于clearedTradeUsiIssuer

clearedTradeUsiIssuer\s?(\d+)

这些正则表达式中的每一个都将与放入第1组的相应ID匹配。