replace specific commas using strrep

3 vues (au cours des 30 derniers jours)
Lukas Netzer
Lukas Netzer le 5 Août 2021
Commenté : Stephen23 le 6 Août 2021
I converted my data:
'[[0, 145, 0], [145, 169, 1], [169, 1693, 3], [1693, 1708, 1], [1708, 2729, 3], [2729, 2779, 0]]'
using str2num.
Now I can use strrep to remove certain characters. I want to replace commas outside of the square brackets with semicolons and then remove all square brackets.
I know how to remove the brackets, but am not sure how to replace certain commas and leave the others. That's what I would use to remove the brackets:
b=strrep(data,']','');
b=strrep(data,'[','');
The final output should look like that:
'0, 145, 0; 145, 169, 1; 169, 1693, 3; 1693, 1708, 1; 1708, 2729, 3; 2729, 2779, 0'
Thank you for your help!

Réponse acceptée

Scott MacKenzie
Scott MacKenzie le 5 Août 2021
Modifié(e) : Scott MacKenzie le 5 Août 2021
In stages, to show the possibilities...
s1 = '[[0, 145, 0], [145, 169, 1], [169, 1693, 3], [1693, 1708, 1], [1708, 2729, 3], [2729, 2779, 0]]'
s1 = '[[0, 145, 0], [145, 169, 1], [169, 1693, 3], [1693, 1708, 1], [1708, 2729, 3], [2729, 2779, 0]]'
s2 = strrep(s1, '],', '];')
s2 = '[[0, 145, 0]; [145, 169, 1]; [169, 1693, 3]; [1693, 1708, 1]; [1708, 2729, 3]; [2729, 2779, 0]]'
s3 = strrep(s2, ']', '')
s3 = '[[0, 145, 0; [145, 169, 1; [169, 1693, 3; [1693, 1708, 1; [1708, 2729, 3; [2729, 2779, 0'
s4 = strrep(s3, '[', '')
s4 = '0, 145, 0; 145, 169, 1; 169, 1693, 3; 1693, 1708, 1; 1708, 2729, 3; 2729, 2779, 0'

Plus de réponses (1)

Stephen23
Stephen23 le 5 Août 2021
Modifié(e) : Stephen23 le 5 Août 2021
"I converted my data... using str2num."
Although your descriptiion is unclear, I guess that your goal to convert text data into numeric data. In that case, don't waste time fiddling around with strings (or for that matter, using STR2NUM which hides evil EVAL inside):
S = '[[0, 145, 0], [145, 169, 1], [169, 1693, 3], [1693, 1708, 1], [1708, 2729, 3], [2729, 2779, 0]]';
M = sscanf(S(2:end),'[%f,%f,%f], ',[3,Inf]).'
M = 6×3
0 145 0 145 169 1 169 1693 3 1693 1708 1 1708 2729 3 2729 2779 0
Or
M = jsondecode(S)
M = 6×3
0 145 0 145 169 1 169 1693 3 1693 1708 1 1708 2729 3 2729 2779 0
  2 commentaires
Lukas Netzer
Lukas Netzer le 6 Août 2021
Hi thanks for your answer - above doesn't seem to work, as my data may be different then presented. I have attached the .mat-file.
Stephen23
Stephen23 le 6 Août 2021
@Lukas Netzer: was the data provided to you in a .mat file? If not, please upload the original data file.

Connectez-vous pour commenter.

Produits


Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by