Предположим, что у меня есть строка '[email protected]'
. Я хочу сохранить строку до и после "@" в 2 отдельные строки. Какой был бы самый простой способ нахождения символа "@" или других символов в строке?
Поиск определенного символа в строке в Matlab
Ответ 1
Вместо этого я использовал strtok и strrep из Matlab.
Ответ 2
STRTOK, и операция индекса должна сделать трюк:
str = '[email protected]';
[name,address] = strtok(str,'@');
address = address(2:end);
Или последняя строка также может быть:
address(1) = '';
Ответ 3
Вы можете использовать strread:
str = '[email protected]';
[a b] = strread(str, '%s %s', 'delimiter','@')
a =
'johndoe'
b =
'hotmail.com'
Ответ 4
Для "простейшего",
>> 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
Было бы немного сложнее, если бы вы искали что-то с более чем одним символом, или вы не были уверены, что есть только один @, и в этом случае MATLAB имеет множество функций для поиска по тексту, включая регулярные выражения (см. doc regexp
).
Ответ 5
TEXTSCAN тоже работает.
str = '[email protected]';
parts = textscan(str, '%s %s', 'Delimiter', '@');
возвращает массив ячеек, где части {1} являются "johndoe", а части {2} - "hotmail.com".
Ответ 6
Если этот поток уже не перечислит полностью, могу ли я добавить еще один? Удобная функция MATLAB на основе perl:
email = '[email protected]';
parts = regexp(email,'@', 'split');
parts - это массив элементов из двух элементов, аналогичный реализации mtrw textscan. Может быть, overkill, но regexp гораздо полезнее при разбиении строки на несколько разграничивающих символов или на поиск шаблонов. Единственным недостатком является использование регулярных выражений, которые я еще не освоил после 15 лет кодирования.
Ответ 7
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];
}