Cell array, string concatenation

5 visualizzazioni (ultimi 30 giorni)
Danny C
Danny C il 7 Set 2016
Commentato: Danny C il 7 Set 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?

Risposta accettata

Mischa Kim
Mischa Kim il 7 Set 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
  1 Commento
Danny C
Danny C il 7 Set 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!

Accedi per commentare.

Più risposte (1)

Nobel Mondal
Nobel Mondal il 7 Set 2016
Modificato: Nobel Mondal il 7 Set 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

Tag

Prodotti

Community Treasure Hunt

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

Start Hunting!

Translated by