Formatted string plus list of numbers using sprintf

8 visualizzazioni (ultimi 30 giorni)
I would like to display comma-separated records like the following,
Record1,2,8,3,5,2,6,3,7,7,7
Here's my attempt, but is there a less clunky way?
% Make the record label string
iRecord = 1;
strLabel = ['Record' num2str(iRecord)];
% Make the number vector
numberList = round(rand(1,10)*10);
% Turn number vector into a string
numberListIntoString = sprintf('%d,', numberList);
% Remove comma at end
numberListIntoString = numberListIntoString(1:(end-1));
% Display the result
disp([strLabel ',' numberListIntoString])

Risposta accettata

Adam Danz
Adam Danz il 18 Giu 2019
numberList = round(rand(1,10)*10);
s = ['Record',regexprep(num2str([1,numberList]),' +',',')];
  3 Commenti
KAE
KAE il 18 Giu 2019
Modificato: KAE il 18 Giu 2019
I was unfamiliar with regexprep, so thanks. Just for my own learning on regular expressions, here we construct a string using
num2str([1,numberList]) % Space-separated list of numbers, with record number first
The spaces are replaced multiple times ('+') with commas.
Adam Danz
Adam Danz il 18 Giu 2019
num2str([1,numberList])
That line adds more than 1 space between each number. The ' +' in the regular expression means search for at least one or more consecutive spaces.
Just for learning, remove that plus sign and see what happens,
numberList = round(rand(1,10)*10);
s = ['Record',regexprep(num2str([1,numberList]),' ',',')];
% ^ only 1 space

Accedi per commentare.

Più risposte (1)

Steven Lord
Steven Lord il 18 Giu 2019
Modificato: Steven Lord il 18 Giu 2019
If you're using a release that supports string convert your numeric vector into a string using string. Next use join to combine the elements of that string array into one string, each separated by a delimeter. Finally concatenate the result to the end of a header string with +. I separated the steps into four lines for clarity, but you could do it in one.
vec = [1 2 8 3 5 2 6 3 7 7 7]
strvec = string(vec)
str = join(strvec, ',')
S = "Record " + str
I chose to separate "Record" and the first element of the the vector with a space; remove the last character of the string in the last line if you don't want that.

Categorie

Scopri di più su Characters and Strings in Help Center e File Exchange

Prodotti


Release

R2019a

Community Treasure Hunt

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

Start Hunting!

Translated by