How to insert space to a string given

16 views (last 30 days)
Buddhini Angelika
Buddhini Angelika on 20 Feb 2016
Answered: Jan on 21 Feb 2016
Recently I have made a gui which allows users to input sentences with spaces in capital letters and stores in a varitable text1. As an example
text1=MY FIRST GUI.
Then it removes the space present in the sentence by the following command and uses it for some implementation and transfers it to another gui.
text1(findstr(text1,''))=[];
Then in the new gui there is a text box where this text1 is to be displayed but I need to display it including the spaces that were present before in the original sentence. Is there a way to insert those spaces exactly at the original locations by using some commands? ( I want to transfer the existing text1 to a text with spaces without getting the original one itself from the first gui)
I am working in MATLAB R2013a. Please help me with this problem.
Thanks a lot in advance.
  1 Comment
Jan
Jan on 20 Feb 2016
findstr is deprecated for many years now, use strfind instead. The shown command does not remove anything, because the empty string is searched. Is this a typo and you meant:
text1(findstr(text1,' ')) = [];

Sign in to comment.

Answers (4)

Stephen23
Stephen23 on 21 Feb 2016
As long as you know the locations of the space characters, then it is easy to recreate the original string:
>> str = 'MY FIRST GUI';
>> idx = str==' '; % identify spaces
>> tmp = str(~idx) % remove spaces
tmp =
MYFIRSTGUI
Now using only tmp (the string with no spaces) and the indices |idx) we can recreate the original string:
>> new(~idx) = tmp; % string without spaces!
>> new(idx) = 32 % add spaces
new =
MY FIRST GUI

Azzi Abdelmalek
Azzi Abdelmalek on 20 Feb 2016
If you haven't the original text, how Matlab will know where the spaces are located? At least when you remove the spaces, save the indices of spaces that were removed
  3 Comments
Image Analyst
Image Analyst on 21 Feb 2016
Like I said, you should still have the original string so why do you need to insert them in the stripped string?
Buddhini Angelika
Buddhini Angelika on 21 Feb 2016
In this programme I am trying to display some kind of a process. It has some details so its bit difficult to type them all here.
What I can do is in the first gui I can store the locations of spaces in a vector and transfer it to the second gui where only the text without spaces is present. Then is there a way to insert the spaces back.
Thank you very much.

Sign in to comment.


Image Analyst
Image Analyst on 21 Feb 2016
Try this
% Get the text the user typed from the edit box
textString = get(handles.edit1, 'String');
% Now remove all spaces:
textString(textString == ' ') == [];
% Display the string with the spaced back in there.
% This is done simply by sending the original string (not the altered string)
% to the edit field or static text field.
set(handles.text1, 'String', textString);

Jan
Jan on 21 Feb 2016
Storing the indices of the spaces seems to be an indirection. What about storing the original strings in addition? Providing the strings with the spaces sounds easier also. Then the 2nd GUI removes the spaces by its own dynamically.

Categories

Find more on Characters and Strings 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!