# Cell array, string concatenation

14 views (last 30 days)
Danny C on 7 Sep 2016
Commented: Danny C on 7 Sep 2016
*I'm trying to create a function that will concatenate the two input strings. If one of the strings is longer than the other, I should only concatenate the last N characters of the longer string, where N is the length of the shorter string. For example, if the input strings were 'Hello' and 'MATLAB' the output would be ' HelloATLAB'. 'Hello' is the shorter of the two words at 5 characters, so the last 5 characters of the other string are concatenated. The first input will always be concatenated in front of the second input.
So here's the start that I wrote.
function [str] = shortCat(in1, in2)
cin = {in1; in2};
Lin = [length(in1) length(in2)];
Ldif = abs(Lin(1)-Lin(2));
[~,Lmax] = max(Lin);
I'm lost after this. Can someone help me to solve this?

Mischa Kim on 7 Sep 2016
Danny, I would simply use an if-else for that, combined with indexing
function [str] = shortCat(in1, in2)
s1 = size(in1,2);
s2 = size(in2,2);
if s1 > s2
str = [in1(s1-s2+1:s1), in2];
else
str = [in1, in2(s2-s1+1:s2)];
end
end
Danny C on 7 Sep 2016
That's so much simpler than the way I was thinking. I should've used if-else loop from the start. Thank you so much!

Nobel Mondal on 7 Sep 2016
Edited: Nobel Mondal on 7 Sep 2016
function outString = myStringConcatenator(inString1, inString2)
minLength = min(length(inString1), length(inString2));
outString = [inString1(length(inString1)-minLength+1 : end) ...
inString2(length(inString2)-minLength+1 : end)];
end

### Categories

Find more on Timing and presenting 2D and 3D stimuli 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!