数学建模社区-数学中国

标题: 让Matlab接受回车。 [打印本页]

作者: AsmDebuger    时间: 2010-5-28 10:58
标题: 让Matlab接受回车。
最近一直在学习Matlab,渐渐地感觉到了它的魅力,也遇到了一些难题,今天我就说一个问题,关于字符串加入回车问题。
做一个GUI,上面有个Edit框,用
set(handles.edit1,'string',{handles.StrCurrent(1:iLineSize*1),handles.StrCurrent(iLineSize*1+1:iLineSize*2)}
生成两行字符串,显示正确,两行字符。
但是在把字符串复制到剪贴板时候,发现两行字符串变成了一行,命令如下:
strdata = get(handles.edit1,'string');
strdata5 = '';
strdata4 = sprintf('\n');
strdata1 = char(strdata(1,1));
strdata2 = char(strdata(2,1));
strdata3 = strcat(strdata1,strdata4,strdata2);
strdata5 = strcat(strdata5,strdata4,strdata3);
strdata5 = strcat(strdata5,strdata4);
clipboard('copy',strdata5);
上面的命令中,我已经加入了回车,可惜不成功。
经过单步跟踪发现,是strcat函数有限制:
    if ~isempty(str) && (str(end) == 0 || isspace(str(end)))
        str = char(deblank(str));
    end
在判断回车时,(str(end) == 0 || isspace(str(end)))这个条件是成立的,因此回车被删除。
除非你在回车左右加上可显示的ASCII字符才行,但是这又违背了我们的初衷:
strdata4 = sprintf('a\na');
最后没有办法,只有把strcat函数上面的判断语句
isspace(str(end)) 注释掉之后成功复制为两行字符串到剪贴板。
为了发布自己的程序时也可以实现回车加入字符串,只有在上面几句程序中用自己的函数my_strcat来替代strcat函数。
strdata = get(handles.edit1,'string');
strdata5 = '';
strdata4 = sprintf('\n');
strdata1 = char(strdata(1,1));
strdata2 = char(strdata(2,1));
strdata3 = my_strcat(strdata1,strdata4,strdata2);
strdata5 = my_strcat(strdata5,strdata4,strdata3);
strdata5 = my_strcat(strdata5,strdata4);
clipboard('copy',strdata5);




作者: yupo_smart    时间: 2010-6-2 11:25
学习了!
matlab的确有魅力
作者: 李——建辉    时间: 2012-2-5 16:11
不是不够不勤奋,是勤奋的程度还不够.大一就这样过去了,什么都没学,连勤奋都不够.3534726540483415




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5