string text manipulation - adding data based on previous data in the string

Hi,
I have a string (char array) looking as follows:
Time,<Message_CMD>element1,<other_meesage>elemenX,<Message_CMD>element2,<Message_RPT>element3,
I'd like to change the string so that the element will contain the type of the message
Time,<Message_CMD>element1CMD,<other_meesage>elemenX,<Message_CMD>element2CMD,<Message_RPT>element1RPT,
What is the simplest way to do it?
EDIT: note that element1 is both CMD and RPT

 채택된 답변

T = 'Time,<Message_CMD>element1,<other_meesage>elemenX,<Message_CMD>element2,<Message_RPT>element3'
T = 'Time,<Message_CMD>element1,<other_meesage>elemenX,<Message_CMD>element2,<Message_RPT>element3'
U = regexprep(T,'([A-Z]+)>([^,]+)','$1>$2$1')
U = 'Time,<Message_CMD>element1CMD,<other_meesage>elemenX,<Message_CMD>element2CMD,<Message_RPT>element3RPT'

댓글 수: 3

michael
michael 2022년 6월 2일
편집: michael 2022년 6월 2일
This one may work for me.
Can you please elaborate the parameters?
If I read correctly element3 needs to become element1RPT with the change in digit
"Can you please elaborate the parameters?"
Here is a breakdown of the match (regular) and replacement expressions:
regexprep(T,'([A-Z]+)>([^,]+)','$1>$2$1')
% ( ) group 1
% [A-Z]+ match one or more capital letters
% > match literal ">" character
% ( ) group 2
% [^,]+ match one or more non-commas
% $1 group 1
% > literal ">"
% $2 group 2
% $1 group 1 (this adds the text you want)
So the regular expression matches one or more capital letters followed by ">" followed by one or more non-commas (any character that is not a comma). For example:
'Time,<Message_CMD>element1,<other_meesage>elemenX,<Message_CMD>element2,<Message_RPT>element3'
% ^^^ group 1
% ^ literal ">"
% ^^^^^^^^ group 2
It then replaces all of that matched text with exactly the same text, plus it appends group 1 on the end.
Now that I think about it, I could have saved one character by placing ">" inside group 2.

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Walter Roberson
Walter Roberson 2022년 6월 2일
편집: Walter Roberson 2022년 6월 2일
regexprep(S, {'element[12]', 'element3'}, {'$1CMD', '$1RPT'})

댓글 수: 2

Please have a look on the update of the question
regexprep(S, {'element[12]', 'element3'}, {'$1CMD', 'element1RPT'})

댓글을 달려면 로그인하십시오.

m=replace(m,'element1','element1CMD');
m=replace(m,'element2','element2CMD');
m=replace(m,'element3','element3RPT');

카테고리

도움말 센터File Exchange에서 Characters and Strings에 대해 자세히 알아보기

제품

릴리스

R14SP2

태그

질문:

2022년 6월 2일

편집:

2022년 6월 2일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by