首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析字符串:字符串之前的字符串

解析字符串:字符串之前的字符串
EN

Stack Overflow用户
提问于 2014-11-17 03:35:23
回答 5查看 429关注 0票数 0

输入:

代码语言:javascript
复制
chris@mydomain.com
steve@mydomain.com

输出:

代码语言:javascript
复制
chris
steve

我希望在@字符之前得到子字符串。在Python中,我会使用类似于:myString = myString[:myString.find("@")]的内容,但我认为Swift的版本非常复杂,至少从我所读到的情况来看是这样。在这种情况下,是否最好连接到Obj,因为Swift的indexOf/find函数看起来就像这样:Finding index of character in Swift String

像这样的东西,即使它使用数组,似乎是最简单的路线:

代码语言:javascript
复制
contact = contact.componentsSeparatedByString("@")[0]
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-11-17 09:48:09

在Swift中,Python相当于:

代码语言:javascript
复制
myString[myString.startIndex ..< find(myString, "@")!]

但是,除非myString包含"@",否则将导致运行时错误。

这更安全。

代码语言:javascript
复制
if let found = find(myString, "@") {
    myString = myString[myString.startIndex ..< found]
}

注意,find()只搜索Character,而不是子字符串。所以你不能:

代码语言:javascript
复制
find(myString, "@mydomain")
票数 0
EN

Stack Overflow用户

发布于 2014-11-17 03:51:42

这可能对你有帮助

代码语言:javascript
复制
let arr = split(contact, { $0 == "@"}, maxSplit: Int.max, allowEmptySlices: false)
println(arr[0])
票数 0
EN

Stack Overflow用户

发布于 2014-11-17 03:57:28

我相信你已经把钉子钉在头上了。另一种选择是使用正则表达式来找到它。我仍然在快速学习,但是目标-c版本是这样的:

代码语言:javascript
复制
-(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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26965107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档