Поиск конкретного символа в строке в Matlab - PullRequest
19 голосов
/ 15 сентября 2009

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

Ответы [ 7 ]

17 голосов
/ 15 сентября 2009

STRTOK и индексная операция должна помочь:

str = 'johndoe@hotmail.com';
[name,address] = strtok(str,'@');
address = address(2:end);

Или последняя строка также может быть:

address(1) = '';
12 голосов
/ 15 сентября 2009

Вы можете использовать нить :

str = 'johndoe@hotmail.com';
[a b] = strread(str, '%s %s', 'delimiter','@')
a = 
    'johndoe'
b = 
    'hotmail.com'
11 голосов
/ 15 сентября 2009

Для "самых простых",

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

Было бы немного сложнее, если бы вы искали что-то с более чем одним символом, или вы не были уверены, что был точно один @, и в этом случае MATLAB имеет много функций для поиска по тексту, включая регулярные выражения (см. doc regexp).

7 голосов
/ 15 сентября 2009

TEXTSCAN тоже работает.

str = 'johndoe@hotmail.com';
parts = textscan(str, '%s %s', 'Delimiter', '@');

возвращает массив ячеек, где parts {1} - это «johndoe», а parts {2} - «hotmail.com».

5 голосов
/ 21 марта 2013

Если эта тема еще не полностью перечислена, могу ли я добавить другую? Удобная функция MATLAB на основе Perl:

email = 'johndoe@hotmail.com';
parts = regexp(email,'@', 'split');

parts - это двухэлементный массив ячеек, аналогичный реализации текстового сканирования mtrw. Может быть, это излишне, но регулярное выражение гораздо полезнее, если разбить строку по нескольким символам-разделителям или выполнить поиск по шаблону. Единственным недостатком является использование регулярных выражений, которые я до сих пор не освоил после 15 лет кодирования.

0 голосов
/ 15 ноября 2012

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];
    }
0 голосов
/ 15 сентября 2009

Вместо этого я использовал strtok и strrep из Matlab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...