Supponiamo di avere una stringa '[email protected]'
. Voglio memorizzare la stringa prima e dopo "@" in 2 stringhe separate. Quale sarebbe il metodo più semplice per trovare il carattere "@" o altri caratteri nella stringa?Ricerca di un carattere specifico in una stringa in Matlab
risposta
Ho usato invece strtok e strrep da Matlab.
Per "più semplice",
>> 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
Sarebbe un po 'più complicato se stavi cercando qualcosa con più di un carattere, o non erano sicuri se ci fosse esattamente un @, e in quel caso MATLAB ha un sacco di funzioni per la ricerca di testo, comprese le espressioni regolari (vedi doc regexp
).
STRTOK e un'operazione indice dovrebbe fare il trucco:
str = '[email protected]';
[name,address] = strtok(str,'@');
address = address(2:end);
o l'ultima linea potrebbe anche essere:
address(1) = '';
TEXTSCAN funziona troppo.
str = '[email protected]';
parts = textscan(str, '%s %s', 'Delimiter', '@');
restituisce una matrice di celle in cui parti {1} è 'johndoe' e parti {2} è 'hotmail.com'.
È possibile utilizzare strread:
str = '[email protected]';
[a b] = strread(str, '%s %s', 'delimiter','@')
a =
'johndoe'
b =
'hotmail.com'
nota: le versioni recenti di MATLAB consigliano l'uso di 'textscan' invece di' strread' – Amro
String email = "[email protected]";
String a[] = email.split("@");
String def = null;
String ghi = null;
for(int i=0;i<a.length;i++){
def = a[0];
ghi = a[1];
}
Questa non è la lingua corretta. – Lukas
Se questa discussione non è completamente elencata, è possibile aggiungerne un'altra? Un pratico perl basata funzione MATLAB:
email = '[email protected]';
parts = regexp(email,'@', 'split');
parti è una matrice di celle di due elementi simili attuazione textscan di per MTRW. Forse overkill, ma regexp è molto più utile quando si divide una stringa in base a più caratteri di delimitazione o ricerca di pattern. L'unico lato negativo è l'uso di espressioni regolari che non ho ancora imparato dopo 15 anni di programmazione.
+1 strano che nessuno ha menzionato le espressioni regolari per tutto questo tempo :) – Amro
-1. Le altre risposte sono migliori qui poiché forniscono codice di esempio. Come hai usato 'strtok' e' strrep'? Mostra un esempio e passerò a un +1. – gary
Questa è una buona offerta. – Richard