2016-07-06 5 views
0

Ich habe eine .NC-Datei, die ich in Matlab lese, und Informationen aus der Zeitvariable abrufen.So lesen Sie eine bestimmte Nummer (oder ein Wort) aus einer Antwort

der Code sieht wie folgt aus

>> ncreadatt(model_list{3},'T','units') 
ans = 
'months since 1850-01-01' 

, was ich will ist nur die '1850' aus der Antwort tun bekommen.

+0

Wenn das Format konsistent ist, können Sie einfach "ans (12:16)" verwenden, um den 12. bis 16. Wert zu erhalten, der das Jahr wäre. Sie können es mit 'str2num (ans (12:16))' in eine Zahl umwandeln – kkawabat

Antwort

2

Regular expression ist ein sehr leistungsfähiges Werkzeug zum Parsen und Manipulieren von Strings.
Matlab hat regexp Befehl:

line = 'months since 1850-01-01'; 
res = regexp(line, '\s(\d+)-', 'tokens', 'once'); 
year = str2double(res{1}) 

Und die Ergebnisse ist:

year = 
1850 

Der reguläre Ausdruck verwendet '\s(\d+)-' Mittel:

\s - suchen Sie nach einem einzelnen weißen Leerzeichen (der Raum vor 1850).
'(\d+)' - Suchen Sie nach einer oder mehreren Ziffern ('\d+'), die Klammern bedeuten, dass alle hier zutreffenden Zeichen als "Token" gespeichert werden.
'-' - nach einem einzelnen '-' nach den Ziffern suchen.

Sie können damit auf ideone spielen.