How to insert space to a string given

45 次查看(过去 30 天)
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 个评论
Jan
Jan 2016-2-20
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,' ')) = [];

请先登录,再进行评论。

回答(4 个)

Stephen23
Stephen23 2016-2-21
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 2016-2-20
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 个评论
Image Analyst
Image Analyst 2016-2-21
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 2016-2-21
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.

请先登录,再进行评论。


Image Analyst
Image Analyst 2016-2-21
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 2016-2-21
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.

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by