2009-09-15 245 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