测试订购的集合

时间:2013-01-20 19:56:50

标签: collections smalltalk pharo

|email addressList|
email:= '<abc@gmail.com>,abcd ,<abcef@domail.com>'.
addressList:= MailAddressParser addressesIn:email.

上面的代码会给我一个Ordered集合,其中包含所有字符串,但'abcd'不是一个有效的电子邮件ID,它仍然存在于集合中。

我的问题是如何删除不包含“@”的无效电子邮件地址。

addressList do[:ele | " How can i check each item if it includes @ , if not remove it."]

2 个答案:

答案 0 :(得分:3)

您可以使用

addressList select: [ :email | email includes: $@ ]

如果您只查找@之类的字符(如@ dh82所示),或者您需要查找子字符串,则可以使用:

addressList select: [ :email | email includesSubString: '@' ]

select:创建一个新集合,其元素与块中指定的条件匹配。

答案 1 :(得分:3)

您可以采取以下几种方法:

完全按照您的要求进行操作(从现有收藏中删除)

addressList removeAllSuchThat: [:string| (string includes: $@) not ]

或者您可以生成一个新列表,其中仅包含Uko建议的有效元素。在这里,您将地址列表与新列表交换。

addressList select: [:string| string includes: $@ ]

或者您可以生成排除无效元素的新列表

addressList reject: [:string| (string includes: $@) not ]