用户界面 - MATLAB GUI,如何在 GUI 中从静态文本中提取单词



我正在使用MATLAB GUI。在我的项目中,我已经加载了一个文件并在静态文本中显示了内容,但我希望它是一个更具可读性的版本,以便在用户界面中为用户显示。

这是文件的内容:

!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:UsersUserDesktopbin.win32recout.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);'

让我们先假设capturedString = 'nine one'

如果我让capturedString = 'nine',那么WordsToDigit = '9'.但是,如果有多个单词,例如上面的单词:"九一",则结果将是"空矩阵:1×0"。

是否可以检测字符串中的多个子字符串?

例如,capturedString = "dasd 312 nine wqej seven 98w one"WordsToDigit = '971'

首先,将静态文本从 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

单词到数字 = 971 的结果

相关内容

  • 没有找到相关文章

最新更新