string text manipulation - adding data based on previous data in the string
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
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
댓글 수: 0
채택된 답변
  Stephen23
      
      
 2022년 6월 2일
        T = 'Time,<Message_CMD>element1,<other_meesage>elemenX,<Message_CMD>element2,<Message_RPT>element3'
U = regexprep(T,'([A-Z]+)>([^,]+)','$1>$2$1')
댓글 수: 3
  Walter Roberson
      
      
 2022년 6월 2일
				If I read correctly element3 needs to become element1RPT with the change in digit
  Stephen23
      
      
 2022년 6월 2일
				
      편집: Stephen23
      
      
 2022년 6월 2일
  
			"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
      
      
 2022년 6월 2일
        
      편집: Walter Roberson
      
      
 2022년 6월 2일
  
      regexprep(S, {'element[12]', 'element3'}, {'$1CMD', '$1RPT'})
댓글 수: 2
  Walter Roberson
      
      
 2022년 6월 2일
				 regexprep(S, {'element[12]', 'element3'}, {'$1CMD', 'element1RPT'})
  David Hill
      
      
 2022년 6월 2일
        m=replace(m,'element1','element1CMD');
m=replace(m,'element2','element2CMD');
m=replace(m,'element3','element3RPT');
참고 항목
카테고리
				Help Center 및 File Exchange에서 Characters and Strings에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!