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