пожалуйста, прежде чем я забьюсь, потому что есть другие вопросы, связанные с переполнением стека, такие как мой, но они не работают.Я пытаюсь удалить ненужные символы из входящего сообщения без успеха.Я не знаю, что это за символы или что они представляют, однако, похоже, они разбивают данные, например, возврат каретки и перевод строки или новые строки.Мне нужно сохранить все пробелы, кроме тех, что в конце.символы, которые я вижу - ^ M и ^ C.иногда используется вместе и в одиночку.
мой тестовый код в основном из наблюдения других подобных вопросов.
String msg = exchange.getIn().getBody(String.class);
log.info("Message before apply filter: " + msg);
filteredMessage = msg.replaceAll("[^\\x00-\\x7F]","");
log.info("Remove non-ASCII characters: " + filteredMessage);
filteredMessage = msg.replaceAll("[\\p{C}]","");
log.info("Remove all Control characters: " + filteredMessage);
filteredMessage = msg.replaceAll("[\\p{Cntrl}\\p{Cc}\\p{Cf}\\p{Co}\\p{Cn}]","");
log.info("Remove some Control characters: " + filteredMessage);
filteredMessage = msg.replaceAll("[^\\p{Print}]","");
log.info("Remove non printable characters: " + filteredMessage);
filteredMessage = msg.trim();
log.info("Trim: " + filteredMessage);
filteredMessage = msg.replaceAll("\\cM","");
log.info("Remove ^M Control characters: " + filteredMessage);
filteredMessage = msg.replaceAll("^M","");
log.info("Remove ^M Control characters: " + filteredMessage);
exchange.getIn().setBody(filteredMessage);
Примеры файлов данных:
A 291511191831421742XXXXXXXXXXWRN/WN18111917420077000009ENG 2 IGN B FAULT^M ^C
A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
A 080011191830061749XXXXXXXXXXMPF/AN.N306DN/FIDAL800 /DM181119142800/DAKSMF/DSKMSP/WN18111916310034000006NAV ATC/XPDR 1 FAULT^M,18111917480032000009BRAKES HOT^M/FR18111916310034523306ATC 1(1SH1)^M/IDATC 1^M/FR18111916310034723406ATC1(1SH1)/TCAS(1000SG)^M/IDTCAS^M/FR18111917120022833406AFS:FMGC2^M/IDAFS 1^M,IR 1^M,IR 2^M,IR 3^M/FR18111917120022833406AFS:FMGC1^M/IDAFS 1^M,IR 1^M,IR 2^M,IR 3^M ^C
Мои фильтры не работают.вот результаты.это как регулярное выражение вообще не работает или я делаю что-то глупое.спасибо всем!
Message before apply filter: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Remove non-ASCII characters: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Remove all Control characters: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Remove some Control characters: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Remove non printable characters: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Trim: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Remove ^M Control characters: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C
Remove ^M Control characters: A 056611191832641742XXXXXXXXXXFLR/FR18111917410032470002BRK TEMP SENSOR4(6GW)/ BTMU(2GW)^M/IDBSCU 1^M ^C