MATLAB Answers

Bhaskar R

Insert desired number of spaces in the string contains numerical value

Asked by Bhaskar R
on 14 Aug 2019
Latest activity Edited by Bhaskar R
on 14 Aug 2019
I need to print the below string which is in loop as
0 STR 1
where the first character is zero then 30 spaces then string STR and numerical 1 after five spaces
for this i wrote the statement as
txt = sprintf('0%30sSTR%5s%d',1);
But answer is not expected as above it gave the result as below
txt =
'0 STR'


It's not entirely clear what you want and your example is lacking since your format string has three format specifiers (two strings and a decimal), yet you only give it one number.
  • Is STR an input (i.e. it can be some other string) or a fixed part of the format?
  • If it's actually an input does the 30 space change depending on the length of the input or is it fixed regardless?
  • Similarly, is the 5 spacing dependent on the number of digits in the number (i.e. 2 digits = spacing of 4, 3 digits = spacing of 3, etc.)?
Guillaume, only decimal part changes
  • STR is not an input it is a fixed part
  • 30 spaces also a fixed part
  • 5 spaces also fixed
Only last one is decimal value it may varies as single or multiple digits
Note: first character zero is fixed

Sign in to comment.




2 Answers

Answer by Guillaume
on 14 Aug 2019
 Accepted Answer

The clearest way to achieve what you want is to put the spaces explicitly in your format string:
txt = sprintf('0 STR %d', istep)
or construct it explicitly:
txt = sprintf(['0', blanks(30), 'STR', blanks(5), '%d'], istep)
You could also use the format string that you've specified, by giving it spaces for the string formats:
txt = sprintf('0%30sSTR%5s%d', ' ', ' ', istep);
But in my opinion, it's less clear as to the intent than the other two options.

  1 Comment

Yeah, its worked(3rd one required)
Thanks :-)

Sign in to comment.

Answer by Matt J
on 14 Aug 2019

How about
txt="0 STR "+1

  1 Comment

Or, similarly,

Sign in to comment.