2009-09-15 9 views

Répondre

-1

J'ai utilisé strtok et strrep de Matlab à la place.

+4

-1. Les autres réponses sont meilleures ici car elles fournissent un exemple de code. Comment as-tu utilisé 'strtok' et' strrep'? Montre un exemple et je vais passer à +1. – gary

+0

C'est une bonne offre. – Richard

10

Pour « plus facile »,

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

Il serait un peu plus compliqué si vous cherchez quelque chose avec plus d'un caractère, ou vous n'êtes pas sûr s'il y avait exactement un @, et que cas MATLAB a beaucoup de fonctions pour rechercher dans le texte, y compris les expressions régulières (voir doc regexp).

17

STRTOK et une opération d'index devrait faire l'affaire:

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

Ou la dernière ligne pourrait aussi être:

address(1) = ''; 
7

TEXTSCAN fonctionne aussi.

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

renvoie une matrice de cellules où les pièces {1} est 'johndoe' et des parties {2} est 'hotmail.com'.

12

Vous pouvez utiliser strread:

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

note: les versions récentes de MATLAB recommandent d'utiliser 'textscan' au lieu de' strread' – Amro

-4

Chaîne 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]; 
    } 
+1

Ce n'est pas la bonne langue. – Lukas

5

Si ce thread n'est pas complètement énuméré maintenant, puis-je en ajouter un autre? Une fonction de base Matlab perl pratique:

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

parties est une matrice de cellules à deux éléments similaires à la mise en œuvre de MTRW de textscan. Peut-être exagéré, mais regexp est beaucoup plus utile lorsque vous divisez une chaîne par plusieurs caractères de délimitation ou par recherche de motif. Le seul inconvénient est l'utilisation d'expressions régulières que je n'ai toujours pas maîtrisées après 15 ans de codage.

+0

+1 étrange que personne n'a mentionné les expressions régulières tout ce temps :) – Amro

Questions connexes