2009-09-15 191 views

回答

-1

我使用了matlab中的strtok和strrep。

+4

-1。其他答案在这里更好,因为它们提供了示例代码。你如何使用'strtok'和'strrep'?展示一个例子,我会翻到+1。 – gary 2011-04-05 13:06:30

+0

这是一个很好的提议。 – Richard 2012-10-08 11:31:09

10

对于“最简单”,

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

17

STRTOK和索引操作应该做的伎俩:

str = '[email protected]'; 
[name,address] = strtok(str,'@'); 
address = address(2:end); 

或最后一行也可能是:

address(1) = ''; 
7

TEXTSCAN工作过。

str = '[email protected]'; 
parts = textscan(str, '%s %s', 'Delimiter', '@'); 

返回单元阵列,其中部分{1}为'johndoe'且部分{2}为'hotmail.com'。

12

您可以使用strread

str = '[email protected]'; 
[a b] = strread(str, '%s %s', 'delimiter','@') 
a = 
    'johndoe' 
b = 
    'hotmail.com' 
+1

注意:MATLAB的最新版本推荐使用'textscan'而不是'strread' – Amro 2013-04-19 06:08:28

-4

字符串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]; 
    } 
+1

这不是正确的语言。 – Lukas 2014-07-28 20:06:13

5

如果此线程现在还没有完全枚举,我可以添加另一个?一个方便的基于perl的MATLAB函数:

email = '[email protected]'; 
parts = regexp(email,'@', 'split'); 

零件是一个类似于mtrw的textscan实现的二元单元阵列。也许矫枉过正,但是当通过多个分隔字符或模式搜索分割字符串时,regexp更有用。唯一的缺点是正则表达式的使用,我仍然没有在15年的编码后掌握。

+0

+1奇怪,没有人提到正则表达式这整个时间:) – Amro 2013-04-19 06:07:05