How to split string on the last delimiter?

I am supposed to separate a string 'abcdef@eng.abc.edu' into three separate string 'abcdef', 'eng.abc', 'edu' using strsplit function. However, I don't know how to split the string at the last . delimiter instead of separate them into four strings using C = strsplit('abcdef@eng.abc.edu',{'@','.'}). Please help, thanks!

1 件のコメント

dpb
dpb 2016 年 11 月 26 日
Well, you've got to have some other rule that tells you to not consider one delimiter a delimiter at all...what is that rule? You'd have to start by separating out the domain from the address then parse off the last TLD (top-level domain) by searching for the last dot.

サインインしてコメントする。

 採用された回答

Walter Roberson
Walter Roberson 2016 年 11 月 26 日

1 投票

lastdot_pos = find(YourString == '.', 1, 'last');

3 件のコメント

Haotian Shen
Haotian Shen 2016 年 11 月 27 日
Thank though, but this doesn't work because after finding the last delimiter, it is still the same '.' , which appeared twice in the string.
Walter Roberson
Walter Roberson 2016 年 11 月 27 日
YourString = 'abcdef@eng.abc.edu';
lastdot_pos = find(YourString == '.', 1, 'last');
part12 = YourString(1 : lastdot_pos - 1);
part12cell = strsplit(part12, '@');
part1 = part12cell{1};
part2 = part12cell{2};
part3 = YourString(lastdot_pos+1 : end );
Alternative:
YourString = 'abcdef@eng.abc.edu';
part123cell = regexp(YourString, '@|\.(?=\w+$)', 'split');
part1 = part123cell{1};
part2 = part123cell{2};
part3 = part123cell{3};
Haotian Shen
Haotian Shen 2016 年 11 月 27 日
Thank you very much!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeCharacters and Strings についてさらに検索

製品

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by