Подтвердить что ты не робот

Поиск определенного символа в строке в Matlab

Предположим, что у меня есть строка '[email protected]'. Я хочу сохранить строку до и после "@" в 2 отдельные строки. Какой был бы самый простой способ нахождения символа "@" или других символов в строке?

4b9b3361

Ответ 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];
    }