我还是这个MATLAB GUI的新手。 在我的项目中,我已经加载了一个文件,并在静态文本中显示了内容,但我希望它是一个更强大的 READABLE版本,以便在用户界面中显示。
这是文件的内容:
!MLF!#
"*/test001.rec"
0 200000 sent-start -162.580292
200000 4500000 five -2768.522217
4500000 7900000 five -2114.920898
7900000 12300000 one -2661.298828
12300000 15800000 two -2209.799805
15800000 29800000 sent-end -6030.099609
.
我想知道是否有办法从GUI中的静态文本中提取单词,然后将“五五一二”转换为“5512”。
我在谷歌上搜索了将近一周的时间来学习如何做到这一点。 真的很感激任何帮助。 提前致谢! :)
编辑
这是我目前的编码:
data1 = importdata('C:\Users\User\Desktop\bin.win32\recout.mlf','')
set(handles.txtMsg, 'Max', 2);
set(handles.txtMsg,'String',data1)
%capturedString = get(handles.txtMsg,'String');
%capturedString = strjoin(captureString')
capturedString = 'nine one';
%StaticTextInString = regexprep(captureString,'[^\w'']','')
WordsToDigit=find(not(cellfun('isempty',strfind({'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'},capturedString)))) - 1;
set(handles.txtMsg,'String',WordsToDigit);'
我们首先假设captureString ='nine one',
如果我让captureString ='9',那么WordsToDigit ='9'。但是,如果有超过1个单词,例如上面的单词:'nine one',那么结果将是'Empty matrix:1-by-0'..
可以检测字符串中的多个子字符串吗?
例如,capturedString =“dasd 312 nine wqej seven 78w one”,WordsToDigit ='971'。
谢谢!
答案 0 :(得分:1)
首先,从GUI获取静态文本到字符串。例如,如果您有权访问句柄结构:
StaticTextInString = get(handles.yourstatictext,'String');
之后,如果您只有单词形式的数字,您可以使用以下函数获取数字:
find(not(cellfun('isempty',strfind({'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'},StaticTextInString ))))-1
例如,对于StaticTextInString ='five',上一个命令返回5。
多个单词的扩展名:
capturedString = 'dasd 312 nine wqej seven 98w one'
words = strread(capturedString,'%s','delimiter',' ');
digits = {'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'};
WordsToDigit = 0;
j = 1;
for i = 1:size(words)
if sum(ismember(digits, words(i)))==1
newdigit = find(not(cellfun('isempty',strfind({'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'}, char(words(i)) ))))-1;
WordsToDigit = WordsToDigit*10 + newdigit;
j=j+1;
end
end
WordsToDigit = 971
的结果