输入:
chris@mydomain.com
steve@mydomain.com输出:
chris
steve我希望在@字符之前得到子字符串。在Python中,我会使用类似于:myString = myString[:myString.find("@")]的内容,但我认为Swift的版本非常复杂,至少从我所读到的情况来看是这样。在这种情况下,是否最好连接到Obj,因为Swift的indexOf/find函数看起来就像这样:Finding index of character in Swift String?
像这样的东西,即使它使用数组,似乎是最简单的路线:
contact = contact.componentsSeparatedByString("@")[0]发布于 2014-11-17 09:48:09
在Swift中,Python相当于:
myString[myString.startIndex ..< find(myString, "@")!]但是,除非myString包含"@",否则将导致运行时错误。
这更安全。
if let found = find(myString, "@") {
myString = myString[myString.startIndex ..< found]
}注意,find()只搜索Character,而不是子字符串。所以你不能:
find(myString, "@mydomain")发布于 2014-11-17 03:51:42
这可能对你有帮助
let arr = split(contact, { $0 == "@"}, maxSplit: Int.max, allowEmptySlices: false)
println(arr[0])发布于 2014-11-17 03:57:28
我相信你已经把钉子钉在头上了。另一种选择是使用正则表达式来找到它。我仍然在快速学习,但是目标-c版本是这样的:
-(NSString*) parseEmailPrefix(NSString*)email{
NSError *error = nil;
NSString *pattern = @"([A-Z0-9a-z._%+-]+)@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:pattern
options:0
error:&error];
NSTextCheckingResult *result = [expression firstMatchInString:email
options:0
range:NSMakeRange(0, email.length)];
return [string substringWithRange:[result rangeAtIndex:1]];
}在我看来,这是更难读的,但它有一个额外的好处,验证电子邮件,因为你去。
Regex信贷:Regex for email address
https://stackoverflow.com/questions/26965107
复制相似问题