how to remove comma from certain items only from cell array with several items

21 vues (au cours des 30 derniers jours)
hey all, i'am new to matlab and i have a query. i have a single cell array as following:
charstring={'"98,786","103,630","95,758","99,871","106,916",494,361,"92,793","81,741","79,919","79,919",999,989,999'}
this has some items in quotes and others without quotes. what i need to do is remove the ,(comma) character from only those numbers which are between quotes. so my final answer should look like:
charstring={'"98786","103630","95758","99871","106916",494,361,"92793","81741","79919","79919",999,989,999'}
i have tried all combination of strrep replaceBetween regexprep but could not get my head around this question. any help on this matter would be highly appreciated. thanks, azim

Réponse acceptée

Stephen23
Stephen23 le 5 Avr 2017
Modifié(e) : Stephen23 le 5 Avr 2017
This is easy with regexprep:
>> str = {'"98,786","103,630","95,758","99,871","106,916",494,361,"92,793","81,741","79,919","79,919",999,989,999'};
>> out = regexprep(str,'("\d+),(\d+")','$1$2')
out =
"98786","103630","95758","99871","106916",494,361,"92793","81741","79919","79919",999,989,999
  5 commentaires
Guillaume
Guillaume le 5 Avr 2017
regular expression is like any other language (programming or otherwise). If you don't know it, it looks and sounds like gibberish. If you do know it, then it's easy to understand. Certainly, Stephen's expression here is very low on the complexity scale of regular expressions. It's only two capture groups each consisting of digits and " and separated by a comma. Yet, it does the job perfectly.
azim
azim le 5 Avr 2017
beautiful answer...thanks for the help and the great explanation. i hope i become as good as you guys in coding.

Connectez-vous pour commenter.

Plus de réponses (1)

Jan
Jan le 5 Avr 2017
Modifié(e) : Jan le 5 Avr 2017
C = {['"98,786","103,630","95,758","99,871","106,916",494,361,"92,793",', ...
"81,741","79,919","79,919",999,989,999']}
D = strsplit(C{1}, ',');
quoted = strncmp(D, '"', 1);
D(quoted) = strrep(D(quoted), ',', ''); % [EDITED] Typos
Str = sprintf('%s,', D{:});
CleanC = {Str(1:length(Str)-1)}; % remove trailing comma

Catégories

En savoir plus sur Characters and Strings dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by