MATLAB Answers

0

Swap first and last word in a string

Asked by Nobita Nobi on 18 May 2019
Latest activity Edited by madhan ravi
on 18 May 2019
Hi there,
Can anyone please tell me how to continue this task? I am able to find the first and last word but could not figure out the way to swap them.
Many thanks!
function f = swap(str)
s=' ';
sp=strfind(str,s);
for i=1:sp(1)-1
firstword(i)=str(i);
end
lastword = str(sp(end)+1:end);

  0 Comments

Sign in to comment.

Products

2 Answers

Answer by madhan ravi
on 18 May 2019
Edited by madhan ravi
on 18 May 2019
 Accepted Answer

Simpler:
s = 'hello world';
Wanted = swap(s) % function call
% function
function Wanted = swap(str)
S = regexp(str,'\S*','match');
S([1,end]) = S([end,1]);
Wanted = strjoin(S);
end

  0 Comments

Sign in to comment.


Answer by Image Analyst
on 18 May 2019

Here's one way:
% Create sample string.
str = 'one two three four five';
% Split apart into individual words without spaces.
words = strsplit(str)
% Swap the first and last words.
[words(end), words(1)] = deal(words(1), words(end))
% String the words together with spaces between them.
outputString = ''; % Initialize output
for k = 1 : length(words)
outputString = sprintf('%s ', outputString, words{k});
end
% Trim off the leading and trailing spaces.
outputString = strtrim(outputString)

  1 Comment

This adds an extra space inbetween words.
>> strlength(str)
ans =
23
>> strlength(outputString)
ans =
27
>>

Sign in to comment.