Formatted string plus list of numbers using sprintf
6 views (last 30 days)
Show older comments
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])
0 Comments
Accepted Answer
Adam Danz
on 18 Jun 2019
numberList = round(rand(1,10)*10);
s = ['Record',regexprep(num2str([1,numberList]),' +',',')];
3 Comments
Adam Danz
on 18 Jun 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
More Answers (1)
Steven Lord
on 18 Jun 2019
Edited: Steven Lord
on 18 Jun 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.
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!