New string based on parts of old string

1 次查看(过去 30 天)
How do I get new str from this old string? All the strings are in this format. Is there a way to extract based on the position from '(' and after '|'?
OldStr1 = 'Extract clusters: PR (2 files) | DG_MD_CG_22'
OldStr2 = 'Extract clusters: OR (2 files) | AG_MD_HH_CG_HH_22'
NewStr1 = 'DG_MD_CG_22_PR'
NewStr2 = 'AG_MD_HH_CG_HH_22_OR'

采纳的回答

Voss
Voss 2021-12-14
OldStr1 = 'Extract clusters: PR (2 files) | DG_MD_CG_22';
OldStr2 = 'Extract clusters: OR (2 files) | AG_MD_HH_CG_HH_22';
NewStr1 = construct_new_str(OldStr1)
NewStr1 = 'DG_MD_CG_22_PR'
NewStr2 = construct_new_str(OldStr2)
NewStr2 = 'AG_MD_HH_CG_HH_22_OR'
function new_str = construct_new_str(str)
idx0 = find(str == ':',1,'last');
idx1 = find(str == '(',1,'last');
idx2 = find(str == '|',1,'last');
new_str = [str(idx2+2:end) '_' str(idx0+2:idx1-2)];
end

更多回答(1 个)

Steven Lord
Steven Lord 2021-12-14
I would use the extract* functions listed in the Join and Split section of the Characters and Strings category page in the documentation.
s = 'hocus pocus'
s = 'hocus pocus'
h = extractBefore(s, ' ')
h = 'hocus'
p = extractAfter(s, ' ')
p = 'pocus'

类别

Help CenterFile Exchange 中查找有关 String Parsing 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by