How do I join a single string with multiple strings?

1 view (last 30 days)
Hi, I know I can do this with loops but there must be a nicer way.
basepath='/data/';
filebase='video_';
fileext='.avi';
files=['00a' '00b' '00c'];
I'd like the output to be the vector
['/data/video_00a.avi' '/data/video_00b.avi' '/data/video_00c.avi']
(although I'd also be happy with a vertical matrix.
Thanks Tom
  1 Comment
Matt Kindig
Matt Kindig on 17 Oct 2013
Edited: Matt Kindig on 17 Oct 2013
Are you sure you don't want 'files' to be a cell array? Because the way you've defined files, it will just concatenate 00a, 00b, etc. as one string. Observe:
files=['00a' '00b' '00c']
% files = '00a00b00c'
This is probably less useful to you. Instead, define 'files' as:
files = {'00a', '00b', '00c'}

Sign in to comment.

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 17 Oct 2013
Edited: Azzi Abdelmalek on 17 Oct 2013
basepath='/data/';
filebase='video_';
fileext='.avi';
files={'00a', '00b', '00c'}
cellfun(@(x) sprintf([basepath filebase '%s' fileext],x),files,'un',0)
Look at
doc cell

More Answers (1)

Vivek Selvam
Vivek Selvam on 17 Oct 2013
Here you go, Tom.
basepath = '/data/';
filebase = 'video_';
fileext = '.avi';
files = ['00a'; '00b'; '00c'];
n = size(files,1);
horzcat(repmat(basepath,n,1), repmat(filebase,n,1), files, repmat(fileext,n,1))

Categories

Find more on Structures in Help Center and File Exchange

Tags

Products

Community Treasure Hunt

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

Start Hunting!