2009-09-15 28 views

Antwort

-1

Ich verwendete stattdessen strtok und strrep von Matlab.

+4

-1. Die anderen Antworten sind hier besser, da sie Beispielcode bereitstellen. Wie haben Sie 'strtok' und' strrep' verwendet? Zeige ein Beispiel und ich werde zu +1 umdrehen. – gary

+0

Das ist ein gutes Angebot. – Richard

10

Für „einfachste“,

>> email = '[email protected]' 
email = 
[email protected] 
>> email == '@' 
ans = 
    Columns 1 through 13 
    0  0  0  0  0  0  0  1  0  0  0  0  0 
    Columns 14 through 19 
    0  0  0  0  0  0 
>> at = find(email == '@') 
at = 
    8 
>> email(1:at-1) 
ans = 
johndoe 
>> email(at+1:end) 
ans = 
hotmail.com 

etwas kompliziert mehr sein würde, wenn Sie mit mehr als ein Zeichen für etwas gesucht haben, oder Sie waren nicht sicher, ob es genau ein @ war, und dass Fall MATLAB hat viele Funktionen zum Suchen von Text, einschließlich regulärer Ausdrücke (siehe doc regexp).

17

STRTOK und ein Index-Operation den Trick tun sollten:

address(1) = ''; 
7

TEXTSCAN funktioniert auch:

str = '[email protected]'; 
[name,address] = strtok(str,'@'); 
address = address(2:end); 

Oder die letzte Zeile könnte auch sein.

str = '[email protected]'; 
parts = textscan(str, '%s %s', 'Delimiter', '@'); 

gibt ein Zellenfeld, wo Teile {1} ist 'johndoe' und Teile {2} ist 'hotmail.com'.

12

können Sie verwenden strread:

str = '[email protected]'; 
[a b] = strread(str, '%s %s', 'delimiter','@') 
a = 
    'johndoe' 
b = 
    'hotmail.com' 
+1

hinweis: neuere Versionen von MATLAB empfehlen die Verwendung von 'textscan' anstelle von' stread' – Amro

5

Wenn dieser Thread jetzt nicht vollständig aufgelistet ist, darf ich einen weiteren hinzufügen? Eine handliche perl-basierte MATLAB Funktion:

email = '[email protected]'; 
parts = regexp(email,'@', 'split'); 

Teile ist eine Zwei-Element-Zellenarray ähnliche Umsetzung des textscan MTRW. Vielleicht Overkill, aber regexp ist viel nützlicher, wenn Sie eine Zeichenfolge durch mehrere Zeichen oder Muster trennen. Der einzige Nachteil ist die Verwendung von regulären Ausdrücken, die ich nach 15 Jahren Kodierung immer noch nicht beherrsche.

+0

+1 seltsam, dass niemand die ganze Zeit reguläre Ausdrücke erwähnt :) – Amro

Verwandte Themen