Trouver un caractère spécifique dans une chaîne de caractères dans Matlab
Supposons que j'ai une chaîne de caractères 'johndoe@hotmail.com'
. Je veux stocker la chaîne avant et après " @ " dans 2 chaînes séparées. Quelle serait la méthode la plus facile de trouver le caractère "@" ou d'autres caractères dans la chaîne?
7 réponses
Vous pouvez utiliser strread:
str = 'johndoe@hotmail.com';
[a b] = strread(str, '%s %s', 'delimiter','@')
a =
'johndoe'
b =
'hotmail.com'
>> email = 'johndoe@hotmail.com'
email =
johndoe@hotmail.com
>> 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
ce serait un peu plus compliqué si vous cherchiez quelque chose avec plus d'un caractère, ou si vous n'étiez pas sûr qu'il y en ait exactement un @, et dans ce cas, MATLAB a beaucoup de fonctions pour rechercher du texte, y compris des expressions régulières (voir doc regexp
).
si ce fil n'est pas complètement énuméré maintenant, puis-je en ajouter un autre? Une pratique perl-base de la fonction MATLAB:
email = 'johndoe@hotmail.com';
parts = regexp(email,'@', 'split');
parts est un tableau de cellules à deux éléments similaire à l'implémentation de textscan par mtrw. Peut-être exagéré, mais regexp est beaucoup plus utile en séparant une chaîne par de multiples caractères de délimitation ou la recherche de motif. Le seul inconvénient est l'utilisation d'expressions régulières que je n'ai pas encore maîtrisées après 15 ans de codage.
String email = "johndoe@hotmail.com";
String a[] = email.split("@");
String def = null;
String ghi = null;
for(int i=0;i<a.length;i++){
def = a[0];
ghi = a[1];
}