Hi, I have the following code
A = "159 ( 51,1%) 13 (4,2% ) 139 (44,7%)";
A = textscan(A,'%s','Delimiter',' ')';
A{:}(contains(A{:},'(')) = [];
A{:}(contains(A{:},')')) = [];
A{:}(contains(A{:},'%')) = [];
which removes all the brackets and the numbers between the brackets (in this case they are percentages):
% Result after "textscan" (just typing A{:})
8×1 cell array
{'159' }
{'(' }
{'51,1%)' }
{'13' }
{'(4,2%' }
{')' }
{'139' }
{'(44,7%)'}
% Result after all the "contains" (just typing A{:})
3×1 cell array
{'159'}
{'13' }
{'139'}
However, I would like to use one single command for contains with multiple conditions. Would it be possible?
Something like this:
% Input
A{:}(contains(A{:},['(' OR ')' OR '%')) = [];
% Desired output
A = "159 13 139";

 채택된 답변

Matt J
Matt J 2021년 12월 16일
편집: Matt J 2021년 12월 16일

0 개 추천

A = "159 ( 51,1%) 13 (4,2% ) 139 (44,7%)";
A=eraseBetween(A,"(", ")")
A = "159 () 13 () 139 ()"
cellstr( extract(A,digitsPattern) )
ans = 3×1 cell array
{'159'} {'13' } {'139'}

댓글 수: 2

Many thanks @Matt J .... but actually I would need to remove the numbers among the brackets..
My desired output would be this one:
% Desired output
A = "159 13 139";
Sim
Sim 2021년 12월 16일
Cool solution @Matt J, many thanks!

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

추가 답변 (1개)

Matt J
Matt J 2021년 12월 16일
편집: Matt J 2021년 12월 16일

1 개 추천

A = "159 ( 51,1%) 13 (4,2% ) 139 (44,7%)";
A = textscan(A,'%s','Delimiter',' ')';
A=vertcat(A{:});
A( contains(A,{'(',')','%'}) )=[]
A = 3×1 cell array
{'159'} {'13' } {'139'}

댓글 수: 1

Sim
Sim 2021년 12월 16일
Oh Great!! This is exactly what I was thinking about/looking for! The multiple conditions in "contains" are given by curly brackets..!

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

카테고리

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

질문:

Sim
2021년 12월 16일

댓글:

Sim
2021년 12월 16일

Community Treasure Hunt

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

Start Hunting!

Translated by