2016-07-11 2 views
0

Ich bin noch neu in diesem MATLAB GUI. In meinem Projekt habe ich eine Datei geladen und zeigte den Inhalt in der statischen Text, aber ich möchte es eine READABLE Version in der Benutzeroberfläche für Benutzer angezeigt werden. MATLAB GUI, wie man Wörter aus Static Text in GUI extrahiert?

Dies ist der Inhalt der Datei:

!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 
. 

Ich mag gerne wissen, ob es einen Weg gibt, Wörter aus dem statischen Text in der GUI zu extrahieren, und dann wandeln die „fünf fünf eins zwei "bis" 5512 ".

Ich habe seit fast einer Woche gekämpft, um zu googeln, um einen Weg zu lernen, dies zu tun. Jede Hilfe wird wirklich geschätzt. Danke in fortgeschrittenem! :)

Edited,

Dies ist meine aktuelle Codierung:

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);' 

Lasst uns annehmen capturedString = first 'nine one',

wenn ich die capturedString = 'neun' lassen, dann WordsToDigit = '9'. Wenn es jedoch mehr als 1 Wort wie das obige gibt: "Neun Eins", dann wäre das Ergebnis "Leere Matrix: 1-by-0" ..

Ist es möglich, mehrere Unterzeichenfolgen zu erkennen in einer Zeichenfolge?

Zum Beispiel capturedString = "dasd 312 neun wqej sieben 98w eins", WordsToDigit = '971'.

Danke!

+0

Haben Sie versucht, Zahlen in Form von Wörtern in Zahlen umzuwandeln? –

+1

Können Sie Ihren Code teilen? Greifen Sie über eine Callback-Funktion darauf zu, damit Sie Zugriff auf die Handle-Struktur haben und den statischen Text folgendermaßen lesen können: StaticTextInString = get (handles.yourstatictext, 'String'); –

Antwort

1

Zuerst erhalten Sie Static Text von der GUI in die Zeichenfolge. Zum Beispiel, wenn Sie Zugriff auf die Griffe Struktur haben:

StaticTextInString = get(handles.yourstatictext,'String'); 

Danach, wenn Sie nur Ziffern in Form von Wörtern haben, können Sie die stellige Nummer mit der folgenden Funktion erhalten:

find(not(cellfun('isempty',strfind({'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'},StaticTextInString))))-1 

zum Beispiel für StaticTextInString = ‚fünf‘ die vorherige Befehl Rückkehr 5.

die Erweiterung für die mehrfachen Worte:

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 

Ergebnisse mit WordsToDigit = 971

+0

Erstens, danke, dass du dir die Zeit genommen hast, um mit meiner Frage zu helfen, wirklich zu schätzen! Vielen Dank! Das war sehr hilfreich! Ich habe versucht, die Codes zu lernen, die Sie mir gezeigt haben, und schließlich gibt es 1 Problem übrig. Ich konnte es hier nicht beantworten, also habe ich auf dem Post oben bearbeitet, weil es die maximale Anzahl der Zeichen eines Kommentars überschreitet. –

+1

Sie können stread ('dasd 312 neun wqej sieben 98w one', '% s', 'delimiter', '') verwenden, um die Zeichenfolge zu teilen, wenn Sie Matlab Version niedriger als 2013a oder einfach strsplit ('dasd 312 neun wqej sieben 98w One '), wenn Sie eine neuere Version haben. –

+0

es funktionierte magisch! ich danke dir sehr! Worte können meine Dankbarkeit nicht ausdrücken. nochmals vielen Dank! –